枚举常量中局部变量的作用域



我在枚举常量块中创建了一个局部变量,如:

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)

,因为枚举类似于普通类,允许这样的声明。

匿名内部类是一个完全成熟的对象,因此可以定义字段和方法供其内部使用。这些字段和方法,除非它们覆盖超类的方法,否则不可见外部世界,因为匿名内部类总是键入它的超类,没有这些方法或字段。但它能对匿名内部类的操作非常有用吗拥有这些字段和方法,所以在需要时使用它们。

参考

相关内容

  • 没有找到相关文章

最新更新