我遇到了一件有趣的事情:
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。