如何在 switch case 中使用枚举类

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 表达式必须是常量表达式

请建议我,我哪里出错了。

khe*_*ood 5

您不能将方法的结果用作 switch 语句中的情况。开关针对恒定情况进行了优化。枚举非常适合于此,但您必须拥有:

TestEnumClass value = TestEnumClass.valueOf(str);

switch (value) {
    case TEST1: ...
    case TEST2: ...
}
Run Code Online (Sandbox Code Playgroud)