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