Java8枚举避免其他情况

时间:2018-07-01 17:23:56

标签: java if-statement enums java-8

在Java 8中,有任何选项可以避免使用枚举值检查多个对象,并执行特定操作。我不喜欢使用下面的示例?

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

2 个答案:

答案 0 :(得分:2)

您正在寻找enums语句。不仅在Java 8中,您还可以在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语句,This page提供了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

产生以下结果:

import matplotlib.pyplot as plt
import numpy as np

rng = np.random.RandomState(0)
x = np.linspace(0, 10, 500)
y = np.cumsum(rng.randn(500, 6), 0)
plt.plot(x, y)

答案 1 :(得分:2)

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

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