Перечисление Java8 избегать множественных, если еще - PullRequest
0 голосов
/ 01 июля 2018

В java 8 есть какая-либо опция, чтобы избежать множественных проверок со значением enum и выполнить определенную операцию. Я не люблю использовать что-то вроде приведенного ниже примера?

if enum equals A 
 PRINT A
else if enum equals B
 PRINT B
else if enum equlas C
 PRINT C

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Определить enum с помощью абстрактного метода и обеспечить его реализацию значениями.

enum MyEnum{
    A{
           @Override
           public void doSomething() {
             // Logic goes here
           }
        },
    B{
           @Override
           public void doSomething() {
             // Logic goes here
           }
        }

    abstract public void doSomething ();
}

Теперь вы можете напрямую вызывать нужный метод без if.

MyEnum.B.doSomething();
0 голосов
/ 01 июля 2018

То, что вы ищете, это switch заявления. И не только в Java 8, вы можете включить enums во всех предыдущих версиях Java. Рассмотрим следующий код:

public class Dummy {


    enum MyENUM {
        A,
        B,
        C
    }


    public static void main(final String[] args) {
        MyENUM myENUM = MyENUM.A;
        switch (myENUM) {
            case A:
                System.out.println(MyENUM.A);
                break;
            case B:
                System.out.println(MyENUM.B);
                break;
            case C:
                System.out.println(MyENUM.C);
                break;
        }
    }
}

Если вы не хотите использовать switch операторов, Эта страница предоставляет различные альтернативы switch операторов.

Один из способов заменить switch - создать карту. Рассмотрим пример ниже:

public static void main(final String[] args) {

    Map<MyENUM,Runnable> map = new HashMap<>();
    map.put(MyENUM.A,() -> System.out.println(MyENUM.A));
    map.put(MyENUM.B,() -> System.out.println(MyENUM.B));
    map.put(MyENUM.C,() -> System.out.println(MyENUM.C));

    MyENUM myENUM = MyENUM.A;
    map.get(myENUM).run();
}

Дает следующий результат:

A
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...