JDK 1.7Collection
では、たとえば次の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>() {{....
コードをコンパイルするには、次を使用する必要があります。
なんでそうなの?新しいインスタンスを作成しているだけでマップを作成してdiamondを使用できるのに、匿名クラスを介してマップを作成しているとコードがコンパイルされないのはなぜですか?