我正在阅读静态初始化程序并遇到了这个问题
Why reference to a static final field will not trigger class loading?
我从这个问题做了一点修改:
public class Constants {
public static final String c1;
static {
c1 = "C1";
System.out.println("Constants Class Loaded!");
}
}
现在正在打印:
Constants Class Loaded!
C1
似乎当我在静态初始化程序块中为静态最终变量赋值时,运行静态初始化程序。但它不应该运行,因为JLS说引用常量静态变量不应该加载类。任何人都可以解释一下吗?