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