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();

但是,如果这样做,你就永远不能在地图中放置任何东西(因为对它的唯一引用是通配符泛型)。这是真的。我只是想说明实例化实际上需要具体的类型参数。