为什么下面的代码给一个编译时错误。错误泛型代码
Map<String,? extends Object> inputMap =
new HashMap<String, ? extends Object>();
编译时错误。
无法实例
HashMap<String,? extends Object>
我想用String作为键地图和该类型接受任何对象作为价值
为什么下面的代码给一个编译时错误。错误泛型代码
Map<String,? extends Object> inputMap =
new HashMap<String, ? extends Object>();
编译时错误。
无法实例
HashMap<String,? extends Object>
我想用String作为键地图和该类型接受任何对象作为价值
?
并不意味着“采取任何对象”。它意味着“采取特定类型的对象,这恰好是未知的”,这在实际创建容器时没有意义。
试试这个:
Map<String,Object> inputMap = new HashMap<String,Object>();
这是因为你需要指定值的类型那HashMap
应该包含。基本上,在实例化类时不能使用通配符。
这工作虽然罚款:
Map<String, ? extends Object> inputMap = new HashMap<String, Object>();
然而,他说,?
应该延伸Object
是一种多余的,因为一切都扩展对象(你当然可以有你的真实代码的东西比Object
其他)。
如果你这样做,但是,你不能把任何东西在你的地图(如它的唯一的参考是通配符通用)。 –
的确如此。我只是试图说明它实际上需要具体的类型参数。 – aioobe