Почему невозможно использовать значения перечислений в виде строк в корпусе коммутатора? (Или, что случилось с этим :)Использование строковых представлений значений перечисления в ящике коммутатора
String argument;
switch (argument) {
case MyEnum.VALUE1.toString(): // Isn't this equal to "VALUE1" ?
// something
break;
case MyEnum.VALUE2.toString():
// something else
break;
Важно то, что 'VALUE1' является статическим. У вас может быть свой собственный 'myValueOf()', и он все равно будет работать. –
Черт, 'valueOf()' вообще не находится в 'case'. Я удаляю этот предыдущий комментарий, не могу смотреть на него. Еще раз спасибо. – Bloke
Будьте осторожны с valueOf(), которые бросают NPE и IllegalArgumentException, если аргумент недействителен. Код Блока имеет смысл избегать обращения с этим исключением (но, к сожалению, не работает). – Nereis