2012-08-11 21 views
8

Class<? extends Integer> derler, ancak Integer son bir türdür, bu yüzden üst sınır olarak kullanmak mantıklı değildir (hiçbir zaman extend olmaz). Bir tür parametresi için bir üst sınır olarak bir nihai türünü kullanmaya çalışırsanızSon üst sınırı olan joker karakter

, bir derleyici uyarı alacak:

tür parametre T nihai tipi Tamsayı sınırlanmış edilmemelidir. Final tipleri ayrıca neden bir joker mükemmel iyi olabilir, ama bir tür parametresi için bir uyarı atmak için bir üst sınır olarak bir nihai türünü kullanarak ediyorum

uzatılamaz? Java neden joker karakterlerin son bir üst tür tarafından sınırlandırılmasına izin veriyor? Class<? extends Integer> olarak atamak için izin verene kadar

cevap

5

.

Örneğin, bu derler:

Class<? extends Number> numberClass = Integer.class; 
Class<? extends Integer> integerClass = numberClass.asSubclass(Integer.class); 

Bu değildir:

Class<? extends Number> numberClass = Integer.class; 
Class<Integer> integerClass = numberClass.asSubclass(Integer.class); 

Kendim, siz (belki bir örnek sağlayabilir yok gibi bir derleyici uyarı alamadım ve derleyicinizle ilgili ayrıntılar?).

+1

Derleyicinin kendisi için "Sınıf" ın kendiliğinden olduğunu anlayabiliyor gibi görünüyor. '' Tamsayı '' son olduğundan, ikinci örneğinizden döndürülen Tamsayı> 'sınıf ile uyumludur. Ama sanırım bu derleyiciye, değerinden daha fazla karmaşıklık katacaktır. Belki de uyarı Eclipse'e özgüdür: Eclipse Juno w/JDT 3.8.0. – Jeffrey

İlgili konular