次の静的ブロックでいくつかの奇妙なシナリオを分析します。
static {
System.out.println("Inside Static Block");
i=100; // Compilation Successful , why ?
System.out.println(i); // Compilation error "Cannot reference a field before it is defined"
}
private static int i=100;
使用中に同じコードが正常に機能している間:
static {
System.out.println("Inside Static Block");
i=100; // Compilation Successful , why ?
System.out.println(MyClass.i); // Compiles OK
}
private static int i=100;
SOP が必要とするのに、変数の初期化がクラス名を使用した変数アクセスを必要としない理由がわかりませんか?