我在枚举常量块中创建一个局部变量,如:
enum NUMBER {
ONE() {
int one = 1;
},
TWO() {
int two = ONE.one + 1; //!ERROR: one can't be resolved.
}
}
我的问题是为什么我不能引用其他常量的类字段变量?
这是一个课堂领域吗?
我所知道的是,ONE和TWO是NUMBER的字段,因此ONE可以看到TWO并且访问TWO的字段,不是吗?
答案 0 :(得分:2)
这不起作用,因为当您将其声明为
时ONE () {
}
你宣布一个新的匿名内部类。
但是,您可以在NUMBER
枚举中声明一个字段,将其添加到NUMBER
构造函数中,然后在常量中声明它:
ONE(1), TWO(2)
因为枚举类似于常规类并且允许这样的声明。
答案 1 :(得分:1)
匿名内部类是一个完整的对象,因此可以定义 内部使用的字段和方法。这些领域和方法, 除非它们覆盖超类的方法,否则不可见 外部世界因为总是键入一个匿名的内部类 它的超类,没有那些方法或字段。但它 对匿名内部类的操作非常有用 有这些领域和方法,所以如果你需要它们,请使用它们。