List<? extends someObject> list
List<? extends Comparable<? super T>> list
我不明白第二個代碼。正如我從第一個代碼瞭解到的,它存儲了擴展某個對象但是在第二個代碼中的任何對象,這是否意味着它存儲了接口?混亂的通用代碼
List<? extends someObject> list
List<? extends Comparable<? super T>> list
我不明白第二個代碼。正如我從第一個代碼瞭解到的,它存儲了擴展某個對象但是在第二個代碼中的任何對象,這是否意味着它存儲了接口?混亂的通用代碼
第一個是某些至少是SomeObject
的列表。如果它是真實子類的列表,可能是您的不能在列表中插入。看看這樣說:
List<? extends Animal> list
這是一個至少Animal
出頭的列表。可能是這種情況,這是一個貓列表,或者狗列表。我們不知道,因此?
。無論如何,我們知道我們至少可以得到Animal
s,但是我們不能插入,因爲我們不知道列表中的確切類型。
第二個是適用於T
或某些超類的類似實現(或派生接口)的列表。因此,此列表中的所有對象都可用於比較T
對象。但是,當然,和以前一樣,我們不能確定列表使用哪種類型的Comparable
作爲項目,所以我們不能添加任何東西,我們只能以這種形式閱讀它。
編輯:在Comparable<? super T>
上展開:使用super
而不是extends
可能會違反直覺。這是因爲如果你想比較兩件事情,你可以通過比較東西本身或任何更高類別來做到這一點。所以,如果我想比較狗,這足以讓我知道如何比較動物。如果我可以比較動物我可以比較任何動物,包括狗,貓等。但是,如果我只知道如何比較貓我可能不知道如何比較狗。所以,如果你想找人比較T
,你必須找一個誰可以比較T
,或任何超類T
。
no not at所有。請詳細說明 –
我爲「可比較 super T>」添加了解釋。 –
也許:http://stackoverflow.com/questions/4343202/difference-between-super-t-and-extends-t-in-java –
第二個列表存儲任何實現Comparable接口的對象 – Martheen