【发布时间】:2015-05-24 07:46:07
【问题描述】:
我是 java 枚举的新手,我很困惑为什么这段代码编译得很好
enum Scale5 {
GOOD(), BETTER(), BEST();
static Scale5 s=GOOD;
}
但是这段代码失败了:
enum Scale5 {
GOOD(), BETTER(), BEST();
Scale5 s=GOOD;
}
我得到错误:从初始化程序非法引用静态字段。 我不明白原因。我在枚举方面相对缺乏经验,所以请为我倾倒它。非常感谢!
Cannot refer to the static enum field within an initializer? 这里问的问题与我问的完全相反。在我的情况下,将 s 声明为静态编译代码就好了。
【问题讨论】:
-
看过了,看不懂,一点都不清楚
-
实例字段不能引用枚举级别的静态字段。如果可能的话,你打算用什么变量 s?
-
@tinker 但是为什么不能在这里引用静态字段:class X { static X x; Xy=x; }
标签: java class oop enums static