List<?>, List, List<Object>, List<? extends Object>
各有什么区别?
PHP中文网2017-04-17 17:44:19
我感覺樓上幾位的理解都有問題, 首先, List>表示無界通配符, 並非表示任意類型, 而是表示一個具體類型, 但是這個具體類型是什麼我們編程的時候並不關心; List表示原生list, 沒有泛型參數的list, 這個沒有什麼可以說的, 不推薦使用; List
最後我想說的一點是>其實和 extends Object>有點像, 這個像, 體現在他們可以互相匹配,並且不會產生任何警告 比如:
public class Base
{
public static void unbounded(List<?> list){}
public static void upBounded(List<? extends Object> list){}
public static void main(String args[])
{
List<?> list1 = new ArrayList<Object>() ;
List<? extends Object> list2 = new ArrayList<Object>() ;
unbounded(list2) ;
upBounded(list1) ;
}
}
不過這些差異僅僅是在編譯時編譯器產生的, 到了運行時, 由於擦除, 全部都是List
大家讲道理2017-04-17 17:44:19
List>
與List
:說的是集合裡可以放任意類型的對象,單獨使用List
的話,在Eclipse中會有警告;List<?>
与 List
:说的是集合里可以放任意类型的对象,单独使用List
的话,在Eclipse中会有警告;
List<Object>
:说的是集合里存放Object类型的对象,理解Java中的继承、及向上转型机制,不难发现这个集合其实可以保存任意类型的对象;
List<? extends Object
List
:所說的是集合存放Object類型的對象,理解Java中的繼承、及向上轉型機制,不難發現這個集合其實可以保存任意類型的對象;
List extends Object
>:說的是該集合中保存的物件必須是Object類別的子類別物件;#🎜🎜#
#🎜🎜#具體可以參考《Java核心技術(第一卷)》關於泛型那部分的內容...#🎜🎜#高洛峰2017-04-17 17:44:19
List是集合中的一種。
< >代表了泛型型別
List>代表任意型別
List
如果想了解更多集合框架小姿勢,可以看看我寫的一篇專欄文章,裡面有一章是關於集合框架的