Java 泛型代码中的错误
为什么下面的代码给出编译时错误Java 泛型代码中的错误,java,generics,Java,Generics,为什么下面的代码给出编译时错误 Map<String,? extends Object> inputMap = new HashMap<String, ? extends Object>(); Map inputMap= 新的HashMap(); 编译时错误 Map<String,? extends Object> inputMap = new HashMap<S
Map<String,? extends Object> inputMap =
new HashMap<String, ? extends Object>();
Map inputMap=
新的HashMap();
编译时错误
Map<String,? extends Object> inputMap =
new HashMap<String, ? extends Object>();
无法实例化类型HashMap
我想要一个以字符串作为键并将任何对象作为值的映射,这是因为需要指定
HashMap
应该包含的值的类型。基本上,在实例化类时不能使用通配符
但这很好:
Map<String, ? extends Object> inputMap = new HashMap<String, Object>();
Map inputMap=newhashmap();
然而,说
?
应该扩展对象
有点多余,因为所有东西都扩展对象(当然,在您的真实代码中可能有对象
之外的东西)。?
并不意味着“接受任何对象”。它的意思是“获取一个特定类型的对象,它恰好是未知的”,这在实际创建容器时没有意义
请尝试以下方法:
Map<String,Object> inputMap = new HashMap<String,Object>();
Map inputMap=newhashmap();
但是,如果这样做,你就永远不能在地图中放置任何东西(因为对它的唯一引用是通配符泛型)。这是真的。我只是想说明实例化实际上需要具体的类型参数。