Java 使用{{}创建对象并设置数据

Java 使用{{}创建对象并设置数据,java,Java,我能够使用Java语言做一些实验,令人惊讶的是,我使用了这行代码{}。我还注意到,在使用该代码结构时,我可以使用该类的任何方法,而无需为其创建对象变量 例如: class Sample { public void hello() { // Do something here. } } class SampleTest { public void testHello() { new Sample {{ hello(); }}; } // PSV

我能够使用Java语言做一些实验,令人惊讶的是,我使用了这行代码
{}
。我还注意到,在使用该代码结构时,我可以使用该类的任何方法,而无需为其创建对象变量

例如:

class Sample {
   public void hello() {
      // Do something here.
   }
}
class SampleTest {
   public void testHello() {
      new Sample {{ hello(); }};
   }
   // PSVM ...
}

问题是第8行语句的概念/术语是什么?

第一个大括号创建一个新的AnonymousInnerClass,第二个大括号声明一个实例初始值设定项块,该块在实例化匿名内部类时运行。这种类型的初始值设定项块正式称为“实例初始值设定项”,因为它是在类的实例范围内声明的--“静态初始值设定项”是一个相关概念,其中关键字static放在启动块的大括号之前,初始化器块可以使用包含范围中可用的任何方法、字段和最终变量,但必须注意的是,初始化器是在构造函数之前(而不是在超类构造函数之前)运行的

如果您需要一些示例,请查看以下内容:


Sarajog

第一个大括号创建一个新的AnonymousInnerClass,第二个大括号声明一个实例初始值设定项块,该块在实例化匿名内部类时运行。这种类型的初始值设定项块正式称为“实例初始值设定项”,因为它是在类的实例范围内声明的--“静态初始值设定项”是一个相关概念,其中关键字static放在启动块的大括号之前,初始化器块可以使用包含范围中可用的任何方法、字段和最终变量,但必须注意的是,初始化器是在构造函数之前(而不是在超类构造函数之前)运行的

如果您需要一些示例,请查看以下内容:


Sarajog

这里什么是
Hello
?请参阅或将其称为[“双括号”初始化][1]。[1] :此处的
Hello
是什么?请参阅或将其称为[“双大括号”初始化][1]。[1]: