私は興味深いことに遭遇しました:
static {
System.out.println(test); // error cannot reference a field before it is defined
System.out.println(cheat()); // OK!
}
private static boolean cheat() {
return test;
}
private static boolean test = true;
public static void main(String args[]) {}
最初の方法は間違っており、コンパイラとIDEの両方が間違っていると通知します。2番目のケースでは、不正行為は問題ありませんが、実際にはフィールドはデフォルトでに設定test
されていますfalse
。SunJDK6を使用します。