相关疑难解决方法(0)

在枚举上的Java switch语句中,为什么在每种情况下限定我的值时都会出现编译错误?

我在Java上有一个switch语句,在Enum上我们可以调用IMyInterface.MyEnum

我的每个case语句都有以下形式:IMyInterface.MyEnum.MyValue,(虽然我可以在导入时删除IMyInterface).

但是,编译器(Java 6)会抛出一个错误:"必须用unqalified枚举常量MyValue替换合格的case标签IMyInterface.MyEnum.MyValue".

我显然可以这样做,但对于我的生活,我不明白这个错误的目的是什么.显然,如果编译器可以处理实际值,它应该能够处理完全限定名称,就像它对常量一样.实际上,我会假设编译器将常量转换为完全限定名.

那么,Java大师们,这背后的理由是什么?谢谢!

java enums switch-statement

9
推荐指数
1
解决办法
2805
查看次数

为什么在Java中我们必须编写Enum.Val但只在switch中编写Val?

我有,比方说,

private enum MyEnum { CONST1, CONST2 }
Run Code Online (Sandbox Code Playgroud)

我需要写

private MyEnum var = MyEnum.CONST1;
Run Code Online (Sandbox Code Playgroud)

但在开关中我会写

switch(var) {
case CONST1:
...
}
Run Code Online (Sandbox Code Playgroud)

为何如此区别?

java

4
推荐指数
1
解决办法
69
查看次数

标签 统计

java ×2

enums ×1

switch-statement ×1