java - 编译错误 - 用枚举切换

标签 java compiler-construction enums

<分区>

Possible Duplicate:
Why do I get an Enum constant reference cannot be qualified in a case label?

你好, 有人知道为什么当我切换 Enum 时,案例应该在不合格的 Enum 值上吗?

例子:

switch(var) {

case Enum.FIRST:

break;

}

不合法

但是:

switch(var) {

case FIRST:

break;

}

是合法的。

我知道 var 是特定类型(枚举),但为什么编译器会关心我是否使用枚举值的完全限定名称?

最佳答案

因为 Java 语言规范规定是这样。

具体来说,SwitchLabel 的定义:

SwitchLabel:
        case ConstantExpression :
        case EnumConstantName :
        default :

参见 http://java.sun.com/docs/books/jls/third_edition/html/statements.html#258896

关于java - 编译错误 - 用枚举切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5551568/

相关文章:

java - 从字节转换为字符串的任何其他逻辑

java - JAXB maven 插件只能在发生变化时生成源代码吗?

java - 为什么枚举单例是序列化安全的?

java - 每个枚举的保存方法

java - Enum 类型不是通用的;它不能用参数 <RestClient.RequestMethod> 参数化

java - Runtime.freeMemory() 和公司或提前分配,以防止后期内存不足错误

compiler-construction - 实现编译器和解释器有什么区别?

c++ - 编译/链接过程如何工作?

c# - lambdas 如何作用于局部变量?

java - 当在运行时获取枚举时,使用枚举类中的方法