在Java 8中,有任何选项可以避免使用枚举值检查多个对象,并执行特定操作。我不喜欢使用下面的示例?
if enum equals A
PRINT A
else if enum equals B
PRINT B
else if enum equlas C
PRINT C
答案 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();