在 JDK 1.7 中,我可以创建一个Collection
let,例如这样说HashMap
:
private HashMap<String, String> map = new HashMap<>();
最后是钻石<>
。
但是,如果我正在创建这样的地图:
private static final HashMap<String, String> MAP = new HashMap<>() {{
put("something", "something");
}};
在钻石编译器上说:
Cannot use ''<>'' with anonymous inner classes
我必须使用:... new HashMap<String, String>() {{....
才能编译代码。
为什么会这样?如果我只创建一个新实例,为什么我可以创建地图并使用菱形,但如果我通过匿名类创建地图,则代码无法编译?