2

为什么下面的代码会给出编译时错误。

    Map<String,? extends Object> inputMap = 
                 new HashMap<String, ? extends Object>();

编译时错误。

无法实例化类型HashMap<String,? extends Object>

我想要一个以字符串为键并以任何对象为值的映射

4

2 回答 2

6

这是因为您需要指定HashMap应该包含的值的类型。基本上,实例化类时不能使用通配符。

不过,这很好用:

Map<String, ? extends Object> inputMap = new HashMap<String, Object>();

但是,说?应该扩展Object有点多余,因为一切都扩展了对象(您当然可能有其他东西而不是Object真实代码)。

于 2012-05-10T10:15:29.320 回答
6

?并不意味着“采取任何对象”。它的意思是“取一个特定类型的对象,碰巧是未知的”,这在实际创建容器时没有意义。

试试这个:

 Map<String,Object> inputMap = new HashMap<String,Object>();
于 2012-05-10T10:15:36.307 回答