我在Java上有一个switch语句,在Enum上我们可以调用IMyInterface.MyEnum
我的每个case语句都有以下形式:IMyInterface.MyEnum.MyValue,(虽然我可以在导入时删除IMyInterface).
但是,编译器(Java 6)会抛出一个错误:"必须用unqalified枚举常量MyValue替换合格的case标签IMyInterface.MyEnum.MyValue".
我显然可以这样做,但对于我的生活,我不明白这个错误的目的是什么.显然,如果编译器可以处理实际值,它应该能够处理完全限定名称,就像它对常量一样.实际上,我会假设编译器将常量转换为完全限定名.
那么,Java大师们,这背后的理由是什么?谢谢!
我有,比方说,
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)
为何如此区别?