我想知道为什么第二个地图声明(使用菱形运算符)在第一个地图声明时不会编译。编译错误:
错误:无法推断HashMap的类型参数; map map2 = new HashMap <>(){ 原因:不能在匿名内部类中使用“<>” 其中K,V是类型变量: K扩展了在HashMap类中声明的Object V扩展在类HashMap中声明的Object
码:
Map<String, String> map1 = new HashMap<String, String>() { //compiles fine
{
put("abc", "abc");
}
};
Map<String, String> map2 = new HashMap<>() { //does not compile
{
put("abc", "abc");
}
};
编辑
感谢您的回答 - 我应该更好地阅读编译错误。
我在那里发现了一些人 JLS
如果类实例创建表达式使用类的“<>”形式为类的类型参数声明一个匿名类,那么这是一个编译时错误。