理解这种语法有困难

RP-*_*RP- 3 java

我在阅读其他一些代码时遇到过这种语法

Map<String, String> map = new HashMap<String, String>() {
    { 
         put("a", "b");
    }
};
Run Code Online (Sandbox Code Playgroud)

我知道如何使用,anonymous inner class但这似乎有所不同.有人可以解释一下上面是如何工作的以及它与它有何不同Map<String, String> map = new HashMap<String, String>(); map.put("a", "b");

San*_*rma 6

您基本上是在创建一个匿名类实例并指定一个实例初始化器.根据正常的类来考虑它,例如:

class Person {

  String age, name;

  List<String> hobbies;

  {
    hobbies = new ArrayList<String>();
  }

  public Person(String name, String age) {
    this.name = name;
    this.age = age;
  } 

}
Run Code Online (Sandbox Code Playgroud)

你觉得上面做了什么?你的匿名课正在做类似的事情.:)