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

Wol*_*fiG 0 java enums switch-statement

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

public final enum myEnum {
    VALUE1,
    VALUE2,
    VALUE2,
    ...
}
Run Code Online (Sandbox Code Playgroud)

我已经搜索了很长一段时间的互联网,但只找到了在switch语句中使用枚举的例子和案例陈述作为参数.我想只使用枚举的值作为case语句的参数,switch参数是另一个变量.像这样的东西:

String otherVariable = "VALUE2";
switch (otherVariable) {
    case myEnum,VALUE1.toString():
        ...
        break;
    case myEnum,VALUE2.toString():
        ...
        break;
    default:
        ...
        break;
Run Code Online (Sandbox Code Playgroud)

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

亲切的问候WolfiG

dan*_*niu 5

你想要的可能是什么

String other = "VALUE2";

MyEnum myEnum = MyEnum.valueOf(other);
switch (myEnum) {
    case VALUE1:
    ...
    case VALUE2:
    ...
}
Run Code Online (Sandbox Code Playgroud)

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