【问题标题】:Create object and Set data using {{ }}使用 {{ }} 创建对象并设置数据
【发布时间】:2013-09-09 06:23:19
【问题描述】:

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

例如:

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

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

【问题讨论】:

标签: java


【解决方案1】:

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

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

萨拉乔格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多