誰かがこのコードの何が悪いのか説明できますか?
public class Base {
static {
i = 1;
System.out.println("[Base]after static init block i=" + i);// LINE 1
System.out.println("*************************************");
System.out.println();
}
static int i;
public static void main(String[] args) {
System.out.println(Base.i);
}
}
LINE 1にコメントすると、すべてOKで、Base.mainメソッドは「1」を出力します。LINE 1-がコメント化されていない場合、コンパイル時エラーが発生しました:「不正な前方参照」。したがって、静的initブロックで理解しているように、iの値を設定することはできますが、読み取ることはできません。誰かが理由を説明できますか?