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