关于java枚举类型的疑问

先上一段能编译通过的程序:
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标签必须为枚举常量的非限定名称。
这种形式的不一致让人有些不爽。为什么会有这种不一致呢?
慕慕森
浏览 762回答 2
2回答

拉莫斯之舞

规范是这么定义的,应该有他的原因,虽然我还没有找到,但是可以猜测一下。如果在主函数中写Directiond=EAST;那么EAST枚举容易和类里面的变量(或者常量)混淆。而在switch块里面则没有这个问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript