泛型代码出错

use*_*434 2 java generics

为什么下面的代码给出了编译时错误.

    Map<String,? extends Object> inputMap = 
                 new HashMap<String, ? extends Object>();
Run Code Online (Sandbox Code Playgroud)

编译时错误.

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

我想要一个以String作为键的映射,并将任何对象作为值

aio*_*obe 6

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

这工作正常:

Map<String, ? extends Object> inputMap = new HashMap<String, Object>();
Run Code Online (Sandbox Code Playgroud)

然而,说?应该扩展Object是多余的,因为一切都扩展了对象(你当然可能有其他东西而不是Object真正的代码).


Oli*_*rth 6

?并不意味着"接受任何对象".它意味着"采取特定类型的对象,恰好是未知的",这在实际创建容器时没有意义.

试试这个:

 Map<String,Object> inputMap = new HashMap<String,Object>();
Run Code Online (Sandbox Code Playgroud)