У меня есть следующее перечисление:
public enum Difficulty {
EASY(2), MEDUIM(3), HARD(5), EXTREME(8);
private int length;
Difficulty(int length) {
this.length = length;
}
public int length() {
return length;
}
}
Я хочу иметь доступ к правильному экземпляру enum, знаю ли я номер или имя. Например, если у меня есть int 3
, мне нужна простая функция, которая может возвращать MEDIUM
. И если у меня есть extreme
строка, мне нужна простая функция, способная вернуть 8
. Простым я имею в виду, что я не хочу каждый раз перебирать или сохранять статический массив внутри перечисления.
Ответ должен быть на Java, пожалуйста. Благодарю. Какие изменения я должен внести в структуру переполнения Difficulty
?
public static Difficulty getByName(String name) {
return valueOf(name.toUpperCase());
}
public static Difficulty getByLength(int length) {
switch (length) {
case 2:
return EASY;
case 3:
return MEDIUM;
case 5:
return HARD;
case 8:
return EXTREME;
default:
throw new IllegalArgumentException("invalid length : " + length);
}
}
switch
, почему не сканировать черезDifficulty.values()
для трудности с указанным идентификатором?