2014-03-19 70 views
2

也許是愚蠢的問題:假設我有Java泛型:<?>和跳過它有什麼區別?

abstract class A<T> { 
    List<Wrapper<T>> doStuff() 
} 

我有class B extends A<String>class C extends A<Integer>

現在我想有:

List<A> aces = list with instances of B and C; 

List<Wrapper> wrapperedItems = flattened list of lists returned from doStuff() on all items in aces 

在這一點上我不在乎什麼類型在Wrapper之內。 而我的問題是:我應該使用某處<?>還是我可以跳過它?有什麼不同?

+0

[列表和列表之間的差異](http://stackoverflow.com/questions/14983489/difference-between-list-and-list) –

+0

也可能重複http://stackoverflow.com/questions/7360594 /最新最差原始類型-無界-野生卡之間-和 - 使用對象-i的 –

回答

1

如果您使用List<Wrapper<?>>,您將能夠將對象從列表中移出,但無法添加新項目。通配符基本上對應於與其他類型不同的類型,包括其他通配符。

如果您使用List<Wrapper>,您將能夠獲得列表項目並添加新項目,但現在您有責任防範不正確的類型轉換。

相關問題