3
A
回答
3
的<?>
語法是Java的方法來指定該通用類型是「無界」 - 即它可以是「任何」。
Enumeration<?>
是帶有「無界類型」枚舉 - 可以在任何類型的枚舉分配給這樣的變量,例如:然而
Vector<String> v = new Vector<String>();
Enumeration<String> es = v.elements();
Enumeration<?> e = es; // This assignment compiles OK
,是無界的,所述nextElement()方法Enumeration<?>
返回類型爲Object
(即使它實際上是一個Enumeration<String>
),所以你可能要投:
String s = (String)e.nextElement(); // Unsafe cast - compiler warning
有關背景,Enumeration是一種帶有兩種方法的分型接口hasMoreElements()和 nextElement()。這是一個早期(差)嘗試,被Iterable和Iterator取代。有幾個老班使用它,如Vector和StringTokenizer。
0
?是通配符。你可以把它表示爲?擴展對象或具有相同效果的類別的東西。從我的理解來看,通配符到目前爲止並不完全是一門藝術,在java中它們需要有一定的限制*但是不要在此引用我
2
問號表示它代表所有類型。下面是一個example:
除了具體的實例有所謂的通配符 實例。它們沒有具體的類型作爲類型參數,但是所謂的通配符是 。通配符是一個帶有「 ?」的句法結構,它不僅表示一種類型,而且表示一種類型。在其最簡單的形式 通配符只是一個問號,代表「所有 類型」。
(的通配符參數化的類型)實施例:
public void printPair(Pair<?,?> pair) { System.out.println("("+pair.getFirst()+","+pair.getSecond()+")"); } Pair<?,?> limit = new Pair<String,Long> ("maximum",1024L); printPair(limit);
2
雖然很容易想到?
表示「any」或「all」類型,但它實際上指定了單個未知類型。如果它真的是「任何」,你會期望這個工作:
List<?> l = ...
l.add("foo");
l.add(new Date())
但它沒有。這是因爲該代碼中的類型是未知的,所以編譯器無法判斷是否允許向其添加任何內容。
相關問題
- 1. 在java中代表<< or > >>是什麼意思?
- 2. <>是什麼意思?
- 3. <+>是什麼意思?
- 4. 在Java中,>>或<<是什麼意思?
- 5. <>是什麼意思?
- 6. {< >}是什麼意思?
- 7. 在java中=() - >是什麼意思?
- 8. class myClass <String>是什麼意思?
- 9. Ruby中的<>是什麼意思?
- 10. ArrayList <Number>是什麼意思?
- 11. <ice:outputText value =「#{exam.testName}」/>是什麼意思?
- 12. <String,String>是什麼意思?
- 13. 「$ <$ <CONFIG:Debug>:Release>」在cmake中是什麼意思?
- 14. 列表<String> []是什麼意思在java中?
- 15. 在java中擴展Vector <Object>是什麼意思?
- 16. 這是什麼意思(計算中的<< and > >>)?
- 17. jQuery。 $('<img/>')是什麼意思?
- 18. 「<cmake_binary_dir>/bin」是什麼意思?
- 19. 符號<>是什麼意思?
- 20. <namespace> :: class是什麼意思?
- 21. 「<!DOCTYPE html>」是什麼意思?
- 22. Set <element>是什麼意思?
- 23. 「<xs:sequence />」是什麼意思?
- 24. <meta - data>是什麼意思?
- 25. ReactClass <*>是什麼意思?
- 26. <>運算符是什麼意思
- 27. numeric_limits <double> :: digits10是什麼意思
- 28. 標記<?>是什麼意思?
- 29. Action <Action>是什麼意思?
- 30. <py3fix>是什麼意思?
...和Servlet API:p –