エラーがコメントされた次のコードがあります
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 はすでに初期化されているはずです。
このクラスをシングルトンとして設定するという回避策がありますが、そうするとコードが少し読みにくくなります。ここで何がうまくいかないのか知りたいです。