Так, в качестве примера у меня есть этот JNI код:Как явным образом вызвать статический инициализатор в Java?
/** 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()
. Теперь я мог бы сделать какую-то неприятную логику, включающую проверку булевых, но тогда вы попадаете в поточную безопасность и бла. Полагаю, вы могли бы, но это некрасиво. Есть ли способ явно позвонить GNUTLS.<clinit>();
?
Чтобы уточнить: цель метода «ничего» заключается в том, чтобы убедиться, что класс загружен, правильно? Вам нужно загрузить класс, чтобы его статический инициализатор выполнялся, хотя вам не нужно ничего делать * else * с классом, но, кроме того, чтобы JVM загружал его. – Wyzard
http://stackoverflow.com/questions/31027000/does-jvm-load-all-the-classes-mentioned-by-the-classpath/31028160#31028160 – ZhongYu