Поиск по enum. Java

255
24 июня 2021, 16:50

Всем привет! У меня есть два Enum. В одном написана стоимость, в другом предмет. Название у них одинаковы. Как можно сделать поиск по Enum и найти стоимость и предмет?

Answer 1

Находим Days по значению AnotherEnum и выводим цену:

    enum Days {
        TOMORROW{
            @Override
            public int getPrice() {
                return 200;
            }
        }, YESTERDAY{
            @Override
            public int getPrice() {
                return 100;
            }
        };
        public abstract int getPrice();
    }
    enum AnotherEnum {
        TOMORROW, YESTERDAY;
    }
    public static void main(String[] args) {
        AnotherEnum val = AnotherEnum.YESTERDAY;
        Optional<Days> optionalValue = Arrays.stream(Days.values()).filter(d -> d.name().equals(val.name()) ).findFirst();
        System.out.println(optionalValue.isPresent()?optionalValue.get().getPrice():"500 Internal Server Error");
    }
Answer 2

Например как-то так (код на kotlin). Будет работать при условии полного совпадения имён и порядка объявления в enum-ах:

enum class FirstEnum(val value: Int) {
    ONE(1), TWO(2)
}
enum class SecondEnum(val thing: String) {
    ONE("thing0"), TWO("thing1")
}
fun searchInEnums(query: String): Pair<Int, String>? =
    FirstEnum.values().mapIndexed { index, value -> value to SecondEnum.values()[index] }
        .firstOrNull { it.first.name == query }
        ?.let { it.first.value to it.second.thing }
READ ALSO
Лямбда выражения, странности с телом лямбд

Лямбда выражения, странности с телом лямбд

Вопрос написал ниже в комментах кодаДа там два вопроса, но второй не отдельный вопрос, а лишь уточнение первого вопроса

72
Bootstrap + BootstrapVue. Как оптимизировать?

Bootstrap + BootstrapVue. Как оптимизировать?

Мы вроде бы избавляемся от jQuery и должны получить меньший размерjs файла, но в итоге он у меня получается ещё больше

105
Javascript. Формат переменной

Javascript. Формат переменной

У меня два вопроса: 1) Я передаю в функцию circle: number - начальная позиция круга, final - конец круга, selector - объект, c которым я буду работать, найденный...

91