为什么以下代码会产生编译时错误。
Map<String,? extends Object> inputMap =
new HashMap<String, ? extends Object>();
编译时错误。
无法实例化类型
HashMap<String,? extends Object>
我想要一个以String作为键的地图,并将任何对象作为值
答案 0 :(得分:6)
这是因为您需要指定 HashMap
应包含的值的类型。基本上,在实例化类时不能使用通配符。
这样可以正常工作:
Map<String, ? extends Object> inputMap = new HashMap<String, Object>();
然而,说?
应该扩展Object
是多余的,因为所有内容都扩展了对象(当然,你的实际代码中除了Object
之外还有其他东西)。 / p>
答案 1 :(得分:6)
?
并不意味着“接受任何对象”。它意味着“采取特定类型的对象,恰好是未知的”,这在实际创建容器时没有意义。
请改为尝试:
Map<String,Object> inputMap = new HashMap<String,Object>();