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

问题描述 投票:-1回答:1

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

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;

java enums switch-statement constant-expression
1个回答
4
投票

这里有两个错误:

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

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

    switch
© www.soinside.com 2019 - 2024. All rights reserved.