Как мне получить доступ к enum по int или по строке

1

У меня есть следующее перечисление:

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?

Теги:
enums

1 ответ

1
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);
    }
}
  • 1
    Почему switch , почему не сканировать через Difficulty.values() для трудности с указанным идентификатором?
  • 0
    Это итерация под другим именем: вы полностью переключаетесь. Так что, если никто не ответит, мне придется признать, что другого пути нет. +1 за первый способ. Благодарю.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню