可能重复:
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是特定类型(Enum),但是如果我使用Enum值的完全限定名称,编译器会关心它?
答案 0 :(得分:9)
因为Java语言规范声明它是如此。
具体来说,SwitchLabel的定义:
SwitchLabel:
case ConstantExpression :
case EnumConstantName :
default :
请参阅http://java.sun.com/docs/books/jls/third_edition/html/statements.html#258896
答案 1 :(得分:3)
我猜是因为否则你可以这样做:
switch(var) {
case AnyOtherEnum.FIRST:
break;
}
答案 2 :(得分:0)
因为您正在将'var'切换为“Enum”,所以Enum.FIRST的情况将是“Enum.Enum.FIRST”。种类; - )