【发布时间】:2014-09-25 20:54:03
【问题描述】:
出现错误 - case 表达式必须是常量表达式,当我尝试在 switch case 语句中使用枚举类时:
我的枚举类是,
public enum TestEnumClass {
TEST1("TEST1"),
TEST2("TEST2"),
TEST3("TEST3");
private String enumConstant;
private TestEnumClass(String algoConstant) {
this.enumConstant = algoConstant;
}
public String getEnumConstant() {
return enumConstant;
}
}
我正在尝试在另一个类文件中使用枚举 TestEnumClass,如下所示,
public class TestIndexOf {
public static void main(String[] args) {
String str = args[0];
switch(str){
case TestEnumClass.Test1.getEnumConstant() : System.out.println("test1"); break;
case TestEnumClass.Test2.getEnumConstant() : System.out.println("test2"); break;
}
}
}
它给了我编译时错误:
case 表达式必须是常量表达式
请建议我,我哪里出错了。
【问题讨论】:
-
您检查的值需要是编译时已知的常量。
TestEnumClass.Test1.getEnumConstant()不被认为是恒定的,即使在这种情况下它不会改变。 -
感谢您的信息,那我该如何使用呢?将枚举移动到静态常量是唯一的方法吗?但我只想使用枚举。有什么办法吗?
-
您有几个选择。您可以使用
final static Strings,也可以使用ifs 代替开关,或者您可以打开TestEnumClass.valueOf(str)并让cases 本身成为枚举值。
标签: java enums compiler-errors switch-statement java-7