使用新对象创建对象{}

Creating object with new Object{}

能否请您解释一下这种结构的实际工作原理及其含义?

var newObj = new Object () {
  public String s = "test";
  public int i = 1;
};

newObj 的 class 是什么,它是如何创建的?

newObj 的 class 是匿名内部 Class。这里你在花括号 {}.

内定义了这个匿名内部 class

An anonymous inner class can be useful when making an instance of an object with certain “extras” such as overloading methods of a class or interface, without having to actually subclass a class.

此外,newObj 引用不是 Object 的实例,而是 Object.[=16= 的匿名子 class 的实例]