List<T>和List<?>的區別

一、簡介

 <T>在List、Set、Map中經常見到,用來限制Class中的參數類型,確保Class中參數的一致性。例如:List<String> list = new ArrayList<>();創建了一個內部參數是String類型的類,list中的操作對象都是String。<?>代表任意java類型,只有在不關心數據的具體類型下才使用通配符表示,但在一些情況下,需要將<?>傳入的數據進行強轉,但這樣不如直接傳入<T>。

另外除了<?>,還有<? extends T>上界通配符和<? super T>下界通配符。<? extends T> 表示傳入數據值需要是T類型或T的子類,<? suprt T>表示傳入數據值需要是T類型或T的超類。

一般來說,<?>主要用於變量上,<T>主要用於類或方法上。下圖中,list的元素類型爲?,但往裏邊添加String時,會顯示出錯,因爲list中的類型是一個未知的java類型,不屬於任何類,所以往裏邊添加數據時會出錯。但可以從list中取出數據,取出的數據類型爲Object。 

建議採用的順序是 List<T>、List<?>、List<Object>

二、代碼實例

List<?>是隻讀類型的,不能進行增加、修改操作。

 

 

上一篇:Java面試題總結(附答案)

下一篇:【全棧最全Java框架總結】SSH、SSM、Springboot

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章