我发现它有枚举的凝灰岩.这是Kathy Siera书中的一个例子:
public class WeatherTest {
static Weather w;
public static void main(String[] args) {
System.out.print(w.RAINY.count + " " + w.Sunny.count + " ");
}
}
enum Weather {
RAINY, Sunny;
int count = 0;
Weather() {
System.out.print("c ");
count++;
}
}
输出是c c 1 1.理解.
现在我想如果计数字段是静态的呢?输出是c c 2 2吗?
基于它,我将count变量修改为static.
但是我看到的是:
编译时错误:初始化程序对静态字段的非法引用.
在网上搜索我发现这是Sun的某种环洞,它允许静态方法可以改变静态字段.好的..所以现在我使用静态方法来完成我的工作:
class WeatherTest {
static Weather w;
public static void main(String[] args) {
System.out.print(w.RAINY.count + " " + w.Sunny.count + " ");
}
}
enum Weather {
RAINY, Sunny;
Weather() {
System.out.print("c ");
incr();
}
static int count = 0;
static void incr() {
count++;
}
}
令我惊讶的是,我得到了输出:c c 0 0!
有人可以在我拍摄之前向我解释这种行为吗?