gad*_*ads 14 java compiler-construction enums
可能重复:
为什么我不能在案例标签中获得枚举常量引用?
嗨,有人知道为什么当我切换Enum时,案例应该是不合格的Enum值吗?
例:
switch(var) {
case Enum.FIRST:
break;
}
Run Code Online (Sandbox Code Playgroud)
是非法的
但:
switch(var) {
case FIRST:
break;
}
Run Code Online (Sandbox Code Playgroud)
是合法的.
我知道var是特定类型(Enum),但是如果我使用Enum值的完全限定名称,编译器会关心它?
因为Java语言规范声明它是如此.
具体来说,SwitchLabel的定义:
SwitchLabel:
case ConstantExpression :
case EnumConstantName :
default :
Run Code Online (Sandbox Code Playgroud)
请参阅http://java.sun.com/docs/books/jls/third_edition/html/statements.html#258896
我猜是因为否则你可以做这样的事情:
switch(var) {
case AnyOtherEnum.FIRST:
break;
}
Run Code Online (Sandbox Code Playgroud)