我能够使用Java语言做一些实验,令人惊讶的是我开始使用这行代码{{ }}.更多我已经注意到使用该代码结构,我可以使用该类的任何方法而无需为其创建对象变量.
例如:
class Sample {
public void hello() {
// Do something here.
}
}
class SampleTest {
public void testHello() {
new Sample {{ hello(); }};
}
// PSVM ...
}Run Code Online (Sandbox Code Playgroud)
问题是第8行的陈述所要求的概念/术语是什么?
小智 7
第一个大括号创建一个新的AnonymousInnerClass,第二个大括号声明在实例化匿名内部类时运行的实例初始化程序块.这种类型的初始化程序块正式称为"实例初始化程序",因为它是在类的实例范围内声明的 - "静态初始化程序"是一个相关的概念,其中关键字static放在启动块的括号之前,并且一旦类加载器完成加载类,就在类级别执行(在http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.6中指定)初始化块可以使用包含范围中可用的任何方法,字段和最终变量,但是必须警惕初始化器在构造函数之前运行(但不在超类构造函数之前).
如果您想要一些示例,请访问:http://c2.com/cgi/wiki?DoubleBraceInitialization
Sarajog
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |