Java中的块语句

K''*_*K'' 7 java block

我有一个扩展java.util.HashMap的MyMap类,下面的代码作为一个语句块,但我不明白使用额外的花括号

MyMap m = new MyMap() {
  {
      put("some key", "some value");
  }
};
Run Code Online (Sandbox Code Playgroud)

现在为什么我需要额外的花括号,我不能这样做(但这会引发编译错误)

MyMap m = new MyMap() {
    put("some key", "some value");
};
Run Code Online (Sandbox Code Playgroud)

Ric*_*arn 11

这个:

MyMap m = new MyMap() {
    ....
};
Run Code Online (Sandbox Code Playgroud)

创建一个匿名内部类,它是一个子类HashMap.

这个:

{
    put("some key", "some value");
}
Run Code Online (Sandbox Code Playgroud)

是一个实例初始化器.在创建匿名子类的实例时执行代码.