2012-07-09 46 views

回答

35

<?><? extends Object>的簡寫,它也被稱爲無界通配符。所以你可以在你的泛型中指定任何類型的對象。

例如List類聲明爲List<?>,因爲它可以是任何你想要的列表。


資源:

+0

如果有什麼?那你爲什麼使用通用?我不這麼認爲這是很好的解決方案。因爲''也允許你指定任何類型的對象。 – UnKnown 2016-04-07 09:34:45

8

它是一種wildcard類型。這是短期的? extends Object

如果你得到它,你知道它是一個Object。如果嘗試設置,則不能,因爲它可能是Object的任何子類。

+5

'Class '和'Class'有什麼區別?爲什麼我需要使用'Class '而不是'Class'? – ycomp 2015-10-22 18:37:09

+1

@ycomp原始類型已關閉。例如。地圖; map.entrySet()是一個普通的集合,而不是'Set ',而使用'Map '而你的entrySet是'Set >' – 2015-10-23 12:48:15

+0

爲什麼不直接在這種情況下使用Object?使用泛型的優點是什麼? – Davor 2016-03-23 12:07:49

3

它是一個通配符。假設你有一個集合,但這個集合的類型是未知的,所以你用「?」來表示它。它只是指定類型未知。 欲瞭解更多詳情,請參閱http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf 我相信這會有所幫助。

3

通配符通用是「某事」。它將作爲Object的擴展來處理。

從Java documentation:(?)

在通用代碼,問號,稱爲通配符, 代表未知類型。通配符可用於各種各樣的情況:作爲參數,字段或局部變量的類型; 有時作爲返回類型(儘管更好的編程練習 更具體)。對於泛型方法調用,泛型類實例創建或 超類型,通配符永遠不會用作類型參數 。

因此,例如,List<?>是包含來自未知類型的對象的列表。