簡體   English   中英

Map 是什么<!--?, ?--> Java 中的意思是什么?

[英]What does Map<?, ?> mean in Java?

Java 中的Map<?, ?>是什么意思?
我在網上看過,但似乎找不到任何關於它的文章。

編輯:我在MP3 Duration Java上找到了這個

Map<?,?>表示在編譯時,不知道 Map 的鍵值 object 的 class 類型是什么。

它是一種通配符類型。 http://download.oracle.com/javase/tutorial/extra/generics/wildcards.html

? 表示您對其值不感興趣的占位符(通配符):

HashMap<?, ?> foo = new HashMap<Integer, String>();

而從? 是通配符,你可以跳過它,仍然得到相同的結果:

HashMap foo = new HashMap<Integer, String>();

但它們可用於指定或子集要使用的 generics。 在這個例子中,第一個泛型必須實現 Serializable 接口。

// would fail because HttpServletRequest does not implement Serializable
HashMap<? extends Serializable, ?> foo = new HashMap<HttpServletRequest, String>(); 

但是使用具體類而不是這些通配符總是更好。 你應該只使用? 如果你知道你在做什么:)

從 Java5 開始,語言提供了 Generics。 http://download.oracle.com/javase/tutorial/java/generics/index.html

The notation means that the Map you are creating, will accept an object of class A as a key and an object of class B as a value.

這有助於您作為開發人員,因此您不會再將 Object 轉換為正確的 class。 因此,您將無法將 map 與 A 以外的鍵和 B 以外的對象一起使用。避免丑陋的強制轉換並提供編譯時間限制

Map<?,?>告訴您可以使用每個 object 作為 map 中的keyvalue

但通常像這樣使用 generics 更有用:

Map<String, YourCustomObject> map

所以在這個 map 中,您只能put String作為 key, YourCustomObject作為 value。

請參閱有關 generics 的本教程

這? 是 generics 中的通配符。 Sun...er...Oracle 在這里有一個關於 generics 的很好的教程。 關於通配符有一個單獨的部分。

如果您在問題中發布更多上下文,例如您在哪里看到Map<?, ?>您可能會得到更好的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM