有什么方法可以将枚举转换为常量表达式? 我希望我的开关操作,以枚举值中进行选择,但我得到一个编译错误“CASE表达式必须是常量表达式”,所以我试图将它声明一个变量:Enum的常量表达式
final int REG = MyEnum.REG.getIndex().intValue();
switch (service.getIndex()) {
case REG:
但我仍然得到相同的错误。根据Oracle的文档http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28
编译时常量表达式是一个表达式表示原始类型或字符串的值 不突然完成并是 仅使用由下列:
•字面原始类型和文字类型字符串
所以它不工作,因为我没有使用文字。我想我将不得不声明它:
final int REG = 8;
但它将是更好的链接到枚举。有没有办法做到这一点?
编辑
原来我不需要使用任何最终的变量。它就这么简单:
switch (service) {
case REG:
直到我看到安德烈的评论,我才没有想到它。感谢您的回答。
我假定'service.getIndex()''返回整数',对吗?你可以修改它,让它返回你的枚举? – 2013-05-08 10:35:25
直到Java 1.6,你不能在'switch-case'中使用'String',但你可以在Java 7中使用它。FYI – Joshi 2013-05-08 10:37:21