为什么下面的代码会给出编译时错误。
Map<String,? extends Object> inputMap =
new HashMap<String, ? extends Object>();
编译时错误。
无法实例化类型
HashMap<String,? extends Object>
我想要一个以字符串为键并以任何对象为值的映射
这是因为您需要指定HashMap
应该包含的值的类型。基本上,实例化类时不能使用通配符。
不过,这很好用:
Map<String, ? extends Object> inputMap = new HashMap<String, Object>();
但是,说?
应该扩展Object
有点多余,因为一切都扩展了对象(您当然可能有其他东西而不是Object
真实代码)。
?
并不意味着“采取任何对象”。它的意思是“取一个特定类型的对象,碰巧是未知的”,这在实际创建容器时没有意义。
试试这个:
Map<String,Object> inputMap = new HashMap<String,Object>();