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

时间:2013-09-09 06:23:19

标签: java

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

例如:

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

问题是为第8行的陈述所要求的概念/术语是什么?

1 个答案:

答案 0 :(得分:7)

第一个大括号创建一个新的AnonymousInnerClass,第二个大括号声明在实例化匿名内部类时运行的实例初始化程序块。这种类型的初始化程序块正式称为“实例初始化程序”,因为它是在类的实例范围内声明的 - “静态初始化程序”是一个相关的概念,其中关键字static放在启动块的括号之前,并且一旦类加载器完成加载类(在http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.6处指定),就在类级别执行初始化程序块可以使用包含范围中可用的任何方法,字段和最终变量,但是必须要警惕初始化器在构造函数之前运行(但不在超类构造函数之前)。

如果您想要一些示例,请查看此处:http://c2.com/cgi/wiki?DoubleBraceInitialization

Sarajog