我在下面包含了我的代码。在其他一些示例之后,我甚至尝试动态加载类以强制它运行静态块,但这并不能解决我的问题。类被加载,class. getname()被成功打印,但是,当它到达main方法的最后一行时,它仍然抛出一个错误,说数组为空。
所有其他的答案都解决了似乎不适用于这里的事情,比如如何使用"结束"。关键字可以允许编译器跳过静态块。任何帮助都是感激的!
package helper;
public class StaticTest {
public static boolean [] ALL_TRUE;
private static void setArray(){
ALL_TRUE = new boolean[8];
for(int i=0;i<ALL_TRUE.length;i++){
ALL_TRUE[i] = true;
}
}
static {
setArray();
}
public static void main(String [] args){
ClassLoader cLoader = StaticTest.class.getClassLoader();
try{
Class aClass = cLoader.loadClass("helper.StaticTest");
System.out.println("aClass.getName() = " + aClass.getName());
} catch(ClassNotFoundException e){
e.printStackTrace(System.out);
}
System.out.println(StaticTest.ALL_TRUE[0]);
}
}
如果有人在这里登陆,问题是我已经检查了Netbeans选项"在保存上编译"(在构建→编译)。不知何故,在保存后立即编译文件会阻止静态块运行。
再次感谢所有参与验证代码本身按预期工作的人。