У меня возникла интересная вещь:
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 скажут вам это неправильно. Во втором случае обман в порядке, но на самом деле по умолчанию поле test
равно false
. Использование Sun JDK 6.