Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类是否完全加载在静态成员依赖项上?_Java_Junit_Jvm - Fatal编程技术网

Java 类是否完全加载在静态成员依赖项上?

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修饰符,他可以这样做),那么

我想知道类C的jUnit测试是否只从类a加载字段,这取决于类a及其扩展(类B)的所有逻辑是否都将被完全加载

在这种情况下,JVM是如何工作的


谢谢

第一次引用类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;
    }
}