java中list T 和 list 問號

List<T>可以進行諸如add、remove等操作,因爲它的類型是固定的T類型,在編碼期 不需要進行任何的轉型操作。

List<?>是隻讀類型的,不能進行增加、修改操作,因爲編譯器不知道List中容納的是 什麼類型的元素,也就無畢校驗類型是否安全了,而且List<?>讀取出的元素都是Object類 型的,需要主動轉型,所以它經常用於泛型方法的返回值。注意,List<?>雖然無法增加、修 改元素,但是卻可以刪除元素,比如執行remove、clear等方法,那是因爲它的刪除動作與泛型類型無關

List<Object>也可以讀寫操作,但是它執行寫入操作時需要向上轉型(Upcast),在讀 取數據後需要向下轉型(Downcast),而此時已經失去了泛型存在的意義了。

噠個比方,有一個籃子用來容納物品,List<T>的意思是說,“嘿,我這裏有一個籃子, 可以容納固定類別的東西,比如西瓜、番茄等”。List<?>的意思是說“嘿,我也有一個籃子, 我可以容納任何東西,只要是你想得到的”。

發佈了243 篇原創文章 · 獲贊 47 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章