Dersim varsa: Ben döngü için yukarıdaki satırı değiştirene kadarNeden Java genel bir ham sınıf, tür parametreleri belirtilmemişse, tüm jenerik nesnelere nesneyi siler?
public class OtherClass {
public void test() {
GenericClass a = null;
for (String s : a.getList()) {
}
}
}
Neden List<Object>
dönmek a.getList()
vermez: Başka bir sınıftan bu yöntemi kullanmaya çalıştığınızda
public class GenericClass<TBlah extends Number> {
public List<String> getList() {
return null;
}
}
:
GenericClass<Number> a = null;
bu noktada a.getList At() yapması gerektiği gibi bir List<String>
döndürür?
Düzenleme: Neden "a" değişkenimi bildirdiğime göre neden getList()
tarafından belirtilen sözleşmenin neden etkileneceğini anlamıyorum. getList()
her zaman bir List<String>
döndürür, ne TBlah olduğunu farketmez.
Uhm'da oluşturulmuş olan kod ile geriye dönük uyumluluğunu da korumasını unutma, niçin 'null' olarak başlatsın? – fge
@fge Basitlik. Sanırım sorunla alakasız. – Xenoprimate
Çünkü JLS'nin yazarları tarafından yapılan seçim bu. AFAIK, gerekçelendirme, eğer ham türleri kullanırsanız, jenerik tipler umursamıyorsunuz. Çözüm, ham tiplerden kaçınmaktır. –