Вернуть enum, в зависимости от поля сущности

Рейтинг: 2Ответов: 1Опубликовано: 04.02.2023

На вход метода приходит сущность, как можно на основе этой сущности вернуть ENUM, без конструкции if\else? Так не очень, если количество валют разрастется:

private CurrencyName convertToCurrencyName(Currency currency) {
        if(currency.getName().equals("RUB")) {
            return CurrencyName.RUB;
        }
        if(currency.getName().equals("USD")) {
            return CurrencyName.USD;
        }
        if(currency.getName().equals("EUR")) {
            return CurrencyName.EUR;
        }
        throw new NoSuchElementException();
    }

Класс ENUM

public enum CurrencyName {
    RUB("Roubles"),
    USD("Dollars"),
    EUR("Euro");

    @Getter
    private final String name;

    CurrencyName(String name) {
        this.name = name;
    }
}

Сущность простая, содержит два поля id и name

Ответы

▲ 2Принят

Например, так:

private CurrencyName convertToCurrencyName(Currency currency) {
    try {
        return CurrencyName.valueOf(currency.getName());
    } catch (IllegalArgumentException e) {
        throw new NoSuchElementException();
    }
}