为什么我的 Java 静态块没有执行?(非常简单的例子。其他答案似乎不适用。



我在下面包含了我的代码。在其他一些示例之后,我甚至尝试动态加载类以强制它运行静态块,但这并不能解决我的问题。类被加载,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选项"在保存上编译"(在构建→编译)。不知何故,在保存后立即编译文件会阻止静态块运行。

再次感谢所有参与验证代码本身按预期工作的人。

相关内容

最新更新