关于java枚举类型的疑问
先上一段能编译通过的程序:
enum Direction {
EAST,
WEST,
SOUTH,
NORTH;
}
public class SimpleEnum {
public static void main(String args[]){
Direction d = Direction.EAST;
switch(d) {
case EAST:
System.out.println("Dragon");
break;
case WEST:
System.out.println("Tiger");
break;
case SOUTH:
System.out.println("Peacock");
break;
case NORTH:
System.out.println("Tortoise");
}
}
}
我的疑问是: 为什么程序中对 enum 常量的引用不一致?
在 main函数中,
Direction d = Direction.EAST;
如果写成
Direction d = EAST;
javac 会报错,说找不到符号 EAST.
而switch case的代码块中必须直接跟枚举常量,
如果把 case EAST: 改成 case Direction.EAST:,
javac 会报告说: 枚举 switch case 标签必须为枚举常量的非限定名称。
这种形式的不一致让人有些不爽。为什么会有这种不一致呢?
相关阅读:
关于android Card 风格UI的实现
请问:在输入框内粘贴图片并上传到服务器,怎么用PHP+JS实现?
iOS应用在后台时是否可以进行本地提醒
数据库设计时约束的问题
[js]赋值语句中在变量值前面使用+号,起什么作用?
使用:before在span前生成背景小图片但是不显示?
关于点击空白关闭弹窗的js写法推荐?
react-native的项目中加数据统计
关于buffer变成string
php的error_log会出现漏写的问题吗?
tab bar控件怎么用
ffmpeg 反交错比较
关于c++中if(变量)的问题
页面调试中遇到这两个问题,不知道什么意思
SF markdown 的代码高亮工具是用的什么
关于浏览器的信息检测,有没有比较成熟和完备的开源项目?
Swoole支持类似微信的实时对讲功能吗?
关于beta环境数据问题
jQuery怎么实现鼠标移入第i个li则对应显示第i个div
springmvc数据绑定如何指定构造函数