带字符串的开关中需要的常量表达式

时间:2019-10-16 11:01:23

标签: java enums switch-statement constant-expression

我已经声明了这个枚举类:

public enum class RoleName {
    Worker,
    Boss
}

我想在开关/盒中使用它

switch (requestRole.getName()) {
    case RoleName.Worker.name():

但是我有这个编译错误

constant expression required 

并且如果我删除class,则会收到此IntelliJ IDEA错误:'class' keyword is expected after 'enum;

1 个答案:

答案 0 :(得分:4)

这里有两个错误:

  1. 枚举的定义中不应包含class。根据经验,这些常数应为大写。

    enum RoleName {
        WORKER,
        BOSS;
    }
    
  2. RoleName.Worker.name()不允许作为case表达式,因为它不是a constant expression。您可以将requestRole.getName()转换为RoleName并将其用作a switch expression

    switch (RoleName.valueOf(requestRole.getName())) {
        case WORKER: /* ... */ break;
    }
    
相关问题