当我尝试在 switch case 语句中使用枚举类时,出现错误 - 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 expressions must be constant expressions
请建议我,我哪里出错了。
最佳答案
您不能将方法的结果用作 switch 语句中的 case。开关针对恒定情况进行了优化。枚举非常适合于此,但您必须:
TestEnumClass value = TestEnumClass.valueOf(str);
switch (value) {
case TEST1: ...
case TEST2: ...
}
关于java - 如何在 switch case 中使用枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047929/