为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中,类内的枚举类型是静态的吗?

在Java中,类内的枚举类型是静态的吗?

料青山看我应如是 2019-09-24 09:59:53
我似乎无法像从内部类内部那样从枚举内部访问周围类的实例成员。这是否意味着枚举是静态的?是否可以访问周围类的实例的范围,还是必须在需要的地方将实例传递给枚举的方法?public class Universe {    public final int theAnswer;    public enum Planet {        // ...        EARTH(...);        // ...        // ... constructor etc.        public int deepThought() {            // -> "No enclosing instance of type 'Universe' is accessible in this scope"            return Universe.this.theAnswer;        }    }    public Universe(int locallyUniversalAnswer) {        this.theAnswer = locallyUniversalAnswer;    }}
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

是的,嵌套枚举是隐式静态的。


从语言规范第8.9节开始:


嵌套枚举类型是隐式静态的。可以将嵌套枚举类型显式声明为静态。


查看完整回答
反对 回复 2019-09-24
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

创建实例级(非静态)内部枚举类是没有意义的-如果枚举实例本身与外部类绑定,则它们会破坏枚举保证-


例如,如果你有


public class Foo {

   private enum Bar {

        A, B, C;

   } 

}

为了使枚举值正确地充当常量,(伪代码,忽略访问限制)


Bar b1 = new Foo().A

Bar b2 = new Foo().A

b1和b2必须是相同的对象。


查看完整回答
反对 回复 2019-09-24
  • 2 回答
  • 0 关注
  • 1667 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信