在switch case中使用enum但不作为switch-argument

时间:2018-05-08 11:14:37

标签: java enums switch-statement

我想在开关案例中使用以下枚举作为参考:

public final enum myEnum {
    VALUE1,
    VALUE2,
    VALUE2,
    ...
}

我已经在互联网上搜索了一段时间,但发现只有在switch语句中使用枚举的例子和案例作为参数。我想只使用枚举的值作为case语句的参数,switch参数是另一个变量。像这样:

String otherVariable = "VALUE2";
switch (otherVariable) {
    case myEnum,VALUE1.toString():
        ...
        break;
    case myEnum,VALUE2.toString():
        ...
        break;
    default:
        ...
        break;

当我直接编码时,我得到一个错误" case表达式必须是常量表达式"。我究竟做错了什么?我该如何实现呢?

亲切的问候 WolfiG

1 个答案:

答案 0 :(得分:5)

你想要的可能是

String other = "VALUE2";

MyEnum myEnum = MyEnum.valueOf(other);
switch (myEnum) {
    case VALUE1:
    ...
    case VALUE2:
    ...
}

您无法使用myEnum.toString(),因为它是一种方法调用,可以在调用之间创建不同的结果(即非常量)。