Middle+
Java'da tür silme nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Tür erasure (tip silme) Java'da, tür bilgisi derleme aşamasında silindiğinde gerçekleşen bir süreçtir ve derlenmiş bayt kodu, jenerik parametreler hakkında bilgi içermez.
Ana noktalar:
- Uyumluluk: Jeneriklerin, jenerikleri kullanmayan eski kodlarla çalışmasına olanak tanır.
- Uygulama: Derleyici, parametreli türleri genellikle
Objectolan üst sınırlarıyla değiştirir ve gerekli tür dönüşümlerini ekler. - Kısıtlamalar:
- Primitif türler jenerik parametre olarak kullanılamaz (örneğin,
List<int>). - Parametreli türden bir dizi oluşturulamaz (örneğin,
new List<String>[10]). instanceofoperatörü, parametreli türleri kontrol etmek için kullanılamaz (örneğin,if (list instanceof List<String>)).- Aynı imzaya sahip silinmiş metodlar ile metodlar aşırı yüklenemez.
- Primitif türler jenerik parametre olarak kullanılamaz (örneğin,
Örnek:
// Jeneriklerle kaynak kodu
List<String> stringList = new ArrayList<>();
stringList.add("hello");
String s = stringList.get(0); // Açık tür dönüşümüne gerek yok
// Tür silme sonrası bayt kodu
List list = new ArrayList(); // List<String> yerine List kullanıldı
list.add("hello");
String s = (String)list.get(0); // Gizli dönüşüm eklenmiş
Kısıtlamalara rağmen, tür silme Java'da jeneriklerin uygulanmasında anahtar bir unsurdur ve geriye dönük uyumluluğu sağlar.