4 java enums compiler-errors switch-statement java-7
出现错误 - case 表达式必须是常量表达式当我尝试在 switch case 语句中使用 enum 类时,:
我的枚举类是,
public enum TestEnumClass {
TEST1("TEST1"),
TEST2("TEST2"),
TEST3("TEST3");
private String enumConstant;
private TestEnumClass(String algoConstant) {
this.enumConstant = algoConstant;
}
public String getEnumConstant() {
return enumConstant;
}
}
Run Code Online (Sandbox Code Playgroud)
我试图在另一个类文件中使用 enum 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它给了我编译时错误:
case 表达式必须是常量表达式
请建议我,我哪里出错了。
您不能将方法的结果用作 switch 语句中的情况。开关针对恒定情况进行了优化。枚举非常适合于此,但您必须拥有:
TestEnumClass value = TestEnumClass.valueOf(str);
switch (value) {
case TEST1: ...
case TEST2: ...
}
Run Code Online (Sandbox Code Playgroud)