2 回答

TA贡献1829条经验 获得超4个赞
public
,作为访问修饰符,不能应用于代码块,也不能应用于代码块内的局部变量。
您似乎只想声明静态最终字段:
... public static final TableField ID = new TableField("user_id", "userId"); ...
无需为此使用static
块。

TA贡献1825条经验 获得超6个赞
这个“静态块”是什么令人困惑。这些被称为initializer blocks,或在本例中为 a static initializer block。对于前者,可以将其视为对在初始化期间运行的构造函数代码的扩展。在后一种情况下,它们在类的静态初始化期间运行(即第一次访问该类)。
这些块对于设置可能需要多行执行的字段或设置外部资源很有用。
public class Foobar {
final static int FOO;
// runs when first loading Foobar.class
static {
int i = 1;
i += 2;
FOO = i;
}
final int bar;
// runs when first initializing new Foobar()
{
int j = 3;
j += 4;
bar = i;
}
}
一般来说,它们不是很常见,但它们特别有用的一个地方是用于绑定本机 JNI 库。例如,此方法确保foobar.dll在访问类之前加载。
public class FoobarJNI {
static {
System.loadLibrary("foobar");
}
private native void foo();
private native void bar();
}
添加回答
举报