Использование enum в случае переключателя, но не в качестве аргумента-переключателя - PullRequest
0 голосов
/ 08 мая 2018

Я хочу использовать следующее перечисление в качестве ссылки в случае переключения:

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;

Когда я кодирую это прямо, я получаю ошибку "выражения выражений должны быть константными выражениями". Что я делаю неправильно? Как мне это реализовать?

С уважением WolfiG

1 Ответ

0 голосов
/ 08 мая 2018

То, что вы хотите, вероятно,

String other = "VALUE2";

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

Вы не можете использовать myEnum.toString(), потому что это вызов метода, который может создавать разные результаты между вызовами (т. Е. Непостоянный).

...