Java 类是否完全加载在静态成员依赖项上?
我想知道类C的jUnit测试是否只从类a加载字段,这取决于类a及其扩展(类B)的所有逻辑是否都将被完全加载 在这种情况下,JVM是如何工作的Java 类是否完全加载在静态成员依赖项上?,java,junit,jvm,Java,Junit,Jvm,我想知道类C的jUnit测试是否只从类a加载字段,这取决于类a及其扩展(类B)的所有逻辑是否都将被完全加载 在这种情况下,JVM是如何工作的 谢谢 第一次引用类A时,该类将被完全加载。假设A扩展了B,那么类B也将被完全加载。 然后,B中的所有静态初始值设定项和静态字段将按照B中指定的顺序执行/初始化,然后在A中执行/初始化,然后返回提取常量字段的代码。在示例代码中,可能未加载类A。如果编译器决定将A.CONST值内联到类C中(由于public static final修饰符,他可以这样做),那么
谢谢 第一次引用类A时,该类将被完全加载。假设A扩展了B,那么类B也将被完全加载。
然后,B中的所有静态初始值设定项和静态字段将按照B中指定的顺序执行/初始化,然后在A中执行/初始化,然后返回提取常量字段的代码。在示例代码中,可能未加载类A。如果编译器决定将
A.CONST
值内联到类C中(由于public static final
修饰符,他可以这样做),那么在运行时类C没有对类A的引用,因此JVM没有理由加载类A。
public class A extends B {
public static final int CONST = 6;
... some logic ...
}
public class C {
private int addNumber(int x) {
return x + A.CONST;
}
}