【发布时间】:2026-02-20 14:20:03
【问题描述】:
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;
}
}
我想知道 C 类的 jUnit 测试是否只会从 A 类加载字段,这取决于或是否将完全加载来自 A 类及其扩展(B 类)的所有逻辑。
在这种情况下 JVM 是如何工作的?
谢谢!
【问题讨论】:
-
在示例代码中,可能没有加载类 A。如果编译器决定将
A.CONST值内联到类 C 中(由于public static final修饰符,他可以这样做),在运行时 C 类没有对 A 类的引用,因此 JVM 没有理由加载类A.