Şu anda Java Generics okuyorum ve Wildcards söz konusu olduğunda biraz sıkışmış durumdayım.Java Generics - Kendinden bir alt sınıf mı dersiniz?
Ben Koleksiyonları sınıftan bu yöntemi verildi: tür parametresi sahip olduğundan
List<Object> objs = new ArrayList<Object>();
List<Integer> ints = new ArrayList<Integer>();
Collections.copy(objs, ints);
: Ben o zaman böyle yöntemi çağırmak mümkün olduğunu söylendi
public void <T> copy(List<? super T> dest, List<? extends T> src) {
for(int i = 0; i < src.size(); i++) {
dest.set(i, src.get(i));
}
}
derleyicinin ayrıldığını belirleyen kitap, derleyicinin tip parametresini Tamsayı olarak seçtiğini söylüyor.
Fakat bu nasıl olabilir? o tamsayı olarak kabul olsaydı
, bu yöntem bildiriminde anlamına gelir -
List<? extends T>
List<Integer extends Integer>
da uyarlanabilir.
Bu bir hata mı, yoksa Jeneriklerle ilgili farklı kurallar var mı? Etrafa baktım ve sonuçların çoğunluğu, bir sınıfın kendi alt sınıfı olamayacağını söylüyor.
Nizet'in cevabı elbette doğrudur ve sadece açıkladığı noktayı kaçırıyor olsaydınız, her şey yolunda. Ancak, jenerikler çok hızlı bir şekilde kafa karıştırıcı olabilirler ve eğer bu özel durum hakkında daha kapsamlı bir açıklamaya ihtiyaç duyduğunuzu düşünüyorsanız, bir tane vermeyi deneyebilirim. – user1803551