当我声明地图或地图< Object,Object>我可以在这张地图中放置任何东西
Map map = new HashMap();
map.put("");
但如果我将其声明为Map<?,?>我什么都不放进去
Map<?,?> map = new HashMap();
map.put("");
为什么会出错?
答案 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