我想知道为什么第二个地图声明(使用菱形运算符)在第一个地图声明时不会编译.编译错误:
错误:无法推断HashMap的类型参数; Map map2 = new HashMap <>(){reason:不能使用带有匿名内部类的'<>',其中K,V是类型变量:K扩展在类HashMap中声明的对象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");
}
};
Run Code Online (Sandbox Code Playgroud)
编辑
感谢您的回答 - 我应该更好地阅读编译错误.我在JLS找到了这个项目
如果类实例创建表达式使用类的"<>"形式为类的类型参数声明一个匿名类,那么这是一个编译时错误.