我有以下代码,错误注释
public final class MyStaticClass {
private MyStaticClass() {}
static {
a = new A();
b = new B(a); // Cannot access a field before it is defined
}
private static final A a;
private static final B b;
}
我对使用静态初始化器相当陌生,但我不知道为什么它不会编译。我浏览了有关此主题的一些帖子,并看到了初始化运行的顺序,但这似乎并没有违反规则。当 b 被初始化时, a 应该已经被初始化了。
我有一个解决方法,就是将这个类设置为单例,但这样做会使代码的可读性降低。我很想知道这里出了什么问题。