2016-03-23 22 views
0

merak ediyorum: biz her şeyi saklayabilirsiniz böyleceNeden Object'in listesini alamıyoruz? Bu kod derlenmiş edilemedi neden

private static List<? super String> x() { 
     return null; 
} 


List<Object> l = x(); 

Liste türü nesnenin olduğunu. Kimler açıklayabilir?

+1

PECS hakkında bilgi edinin (Producer extends ve Consumer super) – Andrew

+0

A 'Liste 'bir' List 'olmasına izin verilir, ancak' List liste = new ArrayList () 'yazamazsınız. –

cevap

2
List<Object> != List<? super String> 

Her şeyi üzerinde saklayabilirsiniz.

l.add("a"); 
l.add(1); 
l.add(new Object()); 

Ama aynı şey değildir çünkü bir List<? super String>List<Object> bir atayamayacağı.

Bir BigDecimalList<Object> bir ekleyebileceğiniz, ancak bir List<? super String> bir BigDecimal ekleyemezsiniz.

İlgili konular