我无法在网上找到任何相关信息,因为我不知道要搜索什么,但是Java并没有将此代码标记为有错误:
public class Test {
// ...
{
int test;
}
// ...
}
这是否适用于Java?如果是这样,是什么?
答案 0 :(得分:2)
这称为实例初始值设定项(JLS section 8.6)
创建对象时,实例初始化程序在超级构造函数之后运行,但在它们被定义的类的被调用构造函数之前运行。请参阅JLS 12.5 Creation of New Class Instances。具体而言,在对象创建过程的步骤4中评估实例初始化器。关键是无论使用什么构造函数来实例化对象,实例初始化器总是被调用。
还有一些静态初始化程序,它们相似但标有static
关键字。
public class Test {
static {
// Do something interesting on class load.
}
}
根据我的经验,静态intiailzers更常见,因为你可以在加载类时使用它们来设置复杂的类状态(比如链接JNI库)。