Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8枚举避免多个if-else_Java_If Statement_Enums_Java 8 - Fatal编程技术网

Java8枚举避免多个if-else

Java8枚举避免多个if-else,java,if-statement,enums,java-8,Java,If Statement,Enums,Java 8,在Java8中,是否有任何选项可以避免使用enum值进行多次if-else检查并执行特定操作。我不喜欢用下面的例子 if enum equals A PRINT A else if enum equals B PRINT B else if enum equlas C PRINT C 您要查找的是switch语句。不仅在Java8中,您还可以在所有以前版本的Java中打开enums。考虑下面的代码: public class Dummy { enum MyENUM {

在Java8中,是否有任何选项可以避免使用enum值进行多次if-else检查并执行特定操作。我不喜欢用下面的例子

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

您要查找的是
switch
语句。不仅在Java8中,您还可以在所有以前版本的Java中打开
enums
。考虑下面的代码:

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
语句的各种替代方法

替换
开关的方法之一是创建映射。考虑下面的例子:

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();
}

您要查找的是
switch
语句。不仅在Java8中,您还可以在所有以前版本的Java中打开
enums
。考虑下面的代码:

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
语句的各种替代方法

替换
开关的方法之一是创建映射。考虑下面的例子:

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();
}

使用抽象方法定义枚举,并为其实现提供值

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();

使用抽象方法定义枚举,并为其实现提供值

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();


是否可能是您正在寻找的?如果操作始终是sameIs,则不需要检查相等性是您可能正在寻找的吗?如果操作始终是sameThanks,则不需要检查相等性。如果不在java8中使用switch语句,是否可以简化此过程@java_01更新了应答器您可以用
System.out.println(myEnum)替换整个
switch
语句..@Holger OP问题的目的不是打印枚举。更多的是找到一个替代
if-else
。我写的
System.out.println(MyENUM.A)
基本上是在展示一些语句执行的示例。@PankajSinghal没有迹象表明OP的实际用例没有给出的示例那样多余,因为该示例甚至都不是有效的Java语法。也许Java支持非常量参数的信息对OP来说是有价值的。谢谢。在java8中不使用switch语句,这可以简化吗@java_01更新了应答器您可以用
System.out.println(myEnum)替换整个
switch
语句..@Holger OP问题的目的不是打印枚举。更多的是找到一个替代
if-else
。我写的
System.out.println(MyENUM.A)
基本上是在展示一些语句执行的示例。@PankajSinghal没有迹象表明OP的实际用例没有给出的示例那样多余,因为该示例甚至都不是有效的Java语法。也许Java支持非常量参数的信息可以避免代码重复,这对OP来说很有价值。一个方法接收一个枚举值,并根据该枚举值执行不同的操作。因此,如果没有if条件,是否可以实现上面的代码段?是,您只需要在接收enum的方法中对enum值调用doSomething方法。方法接收enum值,并根据enum值执行不同的操作。因此,如果没有if条件,是否可以实现上述代码段?是,您只需要在接收enum的方法中对enum值调用doSomething方法。