【发布时间】:2009-06-08 14:46:20
【问题描述】:
我在 Java 中有一个 switch 语句,在一个 Enum 上,我们可以调用 IMyInterface.MyEnum
我的每个案例陈述都有以下形式: IMyInterface.MyEnum.MyValue,(虽然如果我导入了 IMyInterface,我可以删除)。
但是,编译器 (Java 6) 会抛出错误: "合格的案例标签 IMyInterface.MyEnum.MyValue 必须替换为不合格的枚举常量 MyValue"。
我显然可以这样做,但是对于我的一生,我不明白这个错误的目的是什么。显然,如果编译器能够处理实际值,它应该能够像处理常量一样处理全限定名。事实上,我会假设编译器会将常量转换为完全限定名称。
那么,Java 专家,这背后的基本原理是什么? 谢谢!
【问题讨论】:
-
就个人而言,我不介意枚举不能在 switch-case 块中进行限定;它使代码更具可读性。请记住,对于您拥有的枚举类(在您可以编辑的代码中),最佳实践是永远不要使用 switch-case 块。在这种情况下,特定于枚举常量的方法比 switch-case 更易于维护且更不脆弱。
标签: java enums switch-statement