Map <! - ?,? - >和Map <object,object>之间的区别

时间:2016-01-13 03:09:54

标签: java

当我声明地图或地图&lt; Object,Object&gt;我可以在这张地图中放置任何东西

Map map = new HashMap();
map.put("");

但如果我将其声明为Map&lt;?,?&gt;我什么都不放进去

Map<?,?> map = new HashMap();
map.put("");

为什么会出错?

3 个答案:

答案 0 :(得分:1)

Map<?,?> map = new HashMap<Integer, Integer>(); // compiles just fine!

?代表一些已修复但未知的类型。您无法将""放入Map<Integer, Integer>Map<?, ?>可以是任何类型的Map,包括Map<Integer, Integer>

答案 1 :(得分:1)

在java集合框架中,?意思是未知类型。您只能从中读取元素,但不能添加除NULL值以外的元素。

所以你可以编译如下:

(true OR false) ? (value if true) : (value if false)

答案 2 :(得分:0)

对于此代码段:

  Map<?,?> map = new HashMap();

Map<?,?>表示键入未知类型的地图 问号(?),称为通配符,通配​​符表示&#34;值类型参数可以是任何&#34;,它并不意味着&#34;你可以使用它,好像它是你的任何东西希望它是&#34;。
有关详情,请转至link