构造函数中的枚举和静态变量
2022-09-01 14:40:46
编译器禁止访问枚举构造函数中的静态字段。下面的源代码有效,它使用静态字段:
public enum TrickyEnum
{
TrickyEnum1, TrickyEnum2;
static int count;
TrickyEnum()
{
incrementCount();
}
private static void incrementCount()
{
count++;
}
public static void main(String... args)
{
System.out.println("Count: " + count);
}
}
输出:
计数:2。
但是下面的代码不起作用,尽管几乎没有区别:
public enum TrickyEnum
{
TrickyEnum1, TrickyEnum2;
static int count;
TrickyEnum()
{
count++; //compiler error
}
public static void main(String... args)
{
System.out.println("Count: " + count);
}
}
根据我的搜索,人们通常声称问题是由于静态字段初始化的顺序造成的。但是第一个例子有效,那么为什么Java开发人员禁止第二个例子呢?它也应该起作用。