Java sealed sınıfları genel API tasarımlarında uyumluluk riski yaratıyor
Öne çıkanlar
- Sealed sınıflar switch ifadelerinde varsayılan blok ihtiyacını kaldırıyor.
- Yeni bir alt tür eklemek istemci kodunda derleme hatasına yol açıyor.
- Yeniden derlenmeyen istemci kodları çalışma zamanında MatchException fırlatıyor.
Java 17 sürümüyle kullanıma sunulan sealed sınıflar ve örüntü eşleme özellikleri, derleyicinin switch ifadelerinde tüm olasılıkları denetlemesine imkan tanıyor. Bu yapı sayesinde geliştiriciler varsayılan bir default bloğu yazmak zorunda kalmadan tüm alt türleri kapsayan kodlar üretebiliyor. Ancak sealed bir arayüze sonradan eklenen yeni bir alt tür, bağımlı istemci kodlarının derleme aşamasında hata vermesine yol açıyor.
Derleme zamanı güvenlik garantisi, istemci kodlarının kütüphane güncellemeleriyle birlikte yeniden derlenmediği durumlarda çalışma zamanı hatalarına dönüşüyor. Yeni bir alt tür içeren kütüphane derlenip mevcut istemci yeniden derlenmediğinde, Java çalışma zamanında MatchException hatası fırlatıyor. Bu durum ikili kod uyumluluğunu doğrudan etkileyerek kütüphane güncellemelerinde beklenmedik kesintiler yaratabiliyor.
Tüm bileşenlerin birlikte derlendiği iç kod tabanlarında bu denetimler yüksek güvenlik sunuyor. Buna karşın genel API düzeyinde dış kullanıma açılan sealed sınıflar, anlamsal sürümleme kuralları gereği her yeni alt tür eklendiğinde ana sürüm artışı zorunluluğu doğuruyor. PEM kodlu kriptografik nesneler gibi önizleme aşamasındaki Java API tasarımlarında da benzer uyumluluk riskleri bulunuyor.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.