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

关于java枚举类型的疑问

关于java枚举类型的疑问

慕慕森 2019-04-07 09:38:43
先上一段能编译通过的程序:enumDirection{EAST,WEST,SOUTH,NORTH;}publicclassSimpleEnum{publicstaticvoidmain(Stringargs[]){Directiond=Direction.EAST;switch(d){caseEAST:System.out.println("Dragon");break;caseWEST:System.out.println("Tiger");break;caseSOUTH:System.out.println("Peacock");break;caseNORTH:System.out.println("Tortoise");}}}我的疑问是:为什么程序中对enum常量的引用不一致?在main函数中,Directiond=Direction.EAST;如果写成Directiond=EAST;javac会报错,说找不到符号EAST.而switchcase的代码块中必须直接跟枚举常量,如果把caseEAST:改成caseDirection.EAST:,javac会报告说:枚举switchcase标签必须为枚举常量的非限定名称。这种形式的不一致让人有些不爽。为什么会有这种不一致呢?
查看完整描述

2 回答

?
拉莫斯之舞

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

规范是这么定义的,应该有他的原因,虽然我还没有找到,但是可以猜测一下。
如果在主函数中写Directiond=EAST;那么EAST枚举容易和类里面的变量(或者常量)混淆。
而在switch块里面则没有这个问题。
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 761 浏览
慕课专栏
更多

添加回答

举报

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