константное выражение требуется при переключении со строкой - PullRequest
0 голосов
/ 16 октября 2019

Я объявил этот класс перечисления:

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 Ответ

4 голосов
/ 16 октября 2019

Здесь две ошибки:

  1. Определение перечисления не должно содержать class. Как правило, константы должны быть в верхнем регистре.

    enum RoleName {
        WORKER,
        BOSS;
    }
    
  2. RoleName.Worker.name() не допускается как выражение case, поскольку оно не является константным выражением . Вы можете преобразовать requestRole.getName() в RoleName и использовать его как a switch выражение .

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