2011-08-05 64 views
6

我嘗試使用列表,而不是名單Java集合<Object>或收藏<?>

List<?> list = new ArrayList<Integer>(); 
... 
list.add(1); //compile error 

我該怎麼辦錯了,怎麼投新價值的整數? 也許我應該在我的項目中使用List?

+0

有沒有你不能申報清單,清單理由嗎? –

+0

嘗試列表list = new ArrayList (); – nidhin

+0

@nidhin - 使用原始類型的不好主意 –

回答

10

List<?>意味着某種類型的列表,但我們不知道哪種類型。您只能將正確類型的對象放入列表中 - 但由於您不知道類型,所以實際上不能將任何東西放入列表null除外)。

除了聲明變量爲List<Integer>之外,沒有辦法解決這個問題。

+0

那麼有沒有時間使用'通用'?對於泛型類的操作是否與它所包含的對象類型無關? (爲什麼這些操作會獨立地有用?) –

+1

是的。例如'Class '有很多不使用類型參數的方法。對於列表(與List <?extends Object>相同),您可以獲取大小,將其與其他列表(或非列表)進行比較,並從中獲取「Object」。型特異性。 –

1
List<Integer> list = new ArrayList<Integer>(); 
... 
list.add(1); 
4
List<Integer> list = new ArrayList<Integer>(); 

泛型類型總是必須是相同的。

1
List<?> list = new ArrayList<Integer>(); 

?意味着某種類型,您必須指定Type爲Integer。所以正確的語法是:

List<Integer> list = new ArrayList<Integer>();