Я получил Enum с другими значениями и хочу переключить строковую переменную. Теперь я врезался в стену, пытаясь преобразовать значения Enum в строки, которые я могу использовать в качестве константы регистра.
Моя лучшая попытка состояла в том, чтобы преобразовать Enum в массив String, но переключатель, похоже, не принимает значения массива в качестве константы регистра. (IntelliJ говорит: «требуется постоянное выражение»)
Enum myEnum = {FOO, BAR}
String input = "foo"
final String[] constant = Arrays.stream(myEnum.values()).map(Enum::name).toArray(String[]::new);
//converts Enum to String[]; made it final, so it is "constant"
switch (input) {
case constant[0]:
System.out.println("foo");
break;
case constant[1]:
System.out.println("bar");
break;
}
Есть ли элегантный способ сделать этот переключатель зависимым от Enum?