如何解决静态块之间的对象依赖关系?
2022-09-01 07:19:54
我最近在工作中遇到了这个问题。虽然我不确定这是否真的是一个好主意,但我不明白编译器如何处理静态块。
下面是一个示例:
假设您有类和:A
B
public class A {
public final static List<Integer> list;
static {
list = new ArrayList<>();
}
}
public class B {
public final static int dependsOnA;
static {
dependsOnA = A.list.size();
}
}
以及一个刚刚读取的主类。B.dependsOnA
中的静态块与 中的静态块相关,因为它使用静态变量。B
A
list
现在,代码可以正确执行,并且在运行时不会引发任何代码。但是,在可能在其他地方使用之前,确保对其进行初始化的机制是什么?NullPointerException
list