【发布时间】:2015-08-12 01:55:34
【问题描述】:
所以,作为一个例子,我有这个 JNI 代码:
/** This literally does nothing. It's purpose is to call the static initializer early to detect if we have issues before loading. */
public static void nothing() {
}
static {
// should be loaded by CLib
if (CLib.hasGNUTLS() == 1) {
globalinit();
}
}
我发现自己确实创建了一个名为“nothing”的函数,以便在必要时尽早调用它,但我也希望在它被更早引用或我们不调用 nothing() 时调用它。现在,我可以做一些涉及检查布尔值的讨厌的逻辑,但是你会进入线程安全,等等。我想你可以,但它并不漂亮。有没有办法显式调用GNUTLS.<clinit>();?
【问题讨论】:
-
只是为了澄清:
nothing方法的目的只是为了确保类已经被加载,对吧?您需要加载该类以使其静态初始化程序运行,即使您不需要对该类执行任何操作else,但除了让 JVM 加载它。
标签: java initialization