List<?>, List, List<Object>, List<? extends Object>各有什么区别?
List<?>, List, List<Object>, List<? extends Object>
我感覺樓上幾位的理解都有問題, 首先, List>表示無界通配符, 並非表示任意類型, 而是表示一個具體類型, 但是這個具體類型是什麼我們編程的時候並不關心; List表示原生list, 沒有泛型參數的list, 這個沒有什麼可以說的, 不推薦使用; List 表示的是這個list存放的是Object, 只要是Object就可以放入; 最後List表示一個集合, 這個集合存放的是Object具體子類別中的某一種, 而非只要是object的子類別就可以放入.
最後我想說的一點是>其實和 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我個人的一點理解
List> 與List:說的是集合裡可以放任意類型的對象,單獨使用List的話,在Eclipse中會有警告;List<?> 与 List:说的是集合里可以放任意类型的对象,单独使用List的话,在Eclipse中会有警告;
List>
List
List<?>
List<Object>:说的是集合里存放Object类型的对象,理解Java中的继承、及向上转型机制,不难发现这个集合其实可以保存任意类型的对象;
List<Object>
List<? extends Object
List extends Object
List是集合中的一種。 代表了泛型型別List>代表任意型別List表示這個集合中可以放object型別的物件List extends Object>代表這個集合中可以放任何繼承於object類別的類型物件
如果想了解更多集合框架小姿勢,可以看看我寫的一篇專欄文章,裡面有一章是關於集合框架的
**List>, List, List, List extends Object> 區別如下:1.了解JDK中的泛型,泛型是為了做類型檢查,希望放在Collection中的東西,在編譯的時候通過限定中的類型,可以做到盡量在編譯時候檢查出錯誤,而不要再線上運行的時候再拋異常。 2.List這樣寫,在eclipse下面會有黃線,有警告的。而且也是不規範的寫法,其餘的都是規範的寫法。 3.List>可以放任何類型;List只可以放Object類型,但由於Object是所有類別的父類,所以其他類別都可以透過在前面加(Object)強制類型轉換,List也是,可以放任何類別或是Object類別本身。 希望對你有幫助~~**
我感覺樓上幾位的理解都有問題, 首先, List>表示無界通配符, 並非表示任意類型, 而是表示一個具體類型, 但是這個具體類型是什麼我們編程的時候並不關心; List表示原生list, 沒有泛型參數的list, 這個沒有什麼可以說的, 不推薦使用; List
最後我想說的一點是>其實和 extends Object>有點像, 這個像, 體現在他們可以互相匹配,並且不會產生任何警告 比如:
不過這些差異僅僅是在編譯時編譯器產生的, 到了運行時, 由於擦除, 全部都是List
List>
與List
:說的是集合裡可以放任意類型的對象,單獨使用List
的話,在Eclipse中會有警告;List<?>
与List
:说的是集合里可以放任意类型的对象,单独使用List
的话,在Eclipse中会有警告;List<Object>
:说的是集合里存放Object类型的对象,理解Java中的继承、及向上转型机制,不难发现这个集合其实可以保存任意类型的对象;List<? extends Object
List
:所說的是集合存放Object類型的對象,理解Java中的繼承、及向上轉型機制,不難發現這個集合其實可以保存任意類型的對象;List extends Object
>:說的是該集合中保存的物件必須是Object類別的子類別物件;#🎜🎜# #🎜🎜#具體可以參考《Java核心技術(第一卷)》關於泛型那部分的內容...#🎜🎜#List是集合中的一種。
代表了泛型型別
List>代表任意型別
List
如果想了解更多集合框架小姿勢,可以看看我寫的一篇專欄文章,裡面有一章是關於集合框架的
**List>, List, List