Java8枚举避免多个if-else
在Java8中,是否有任何选项可以避免使用enum值进行多次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 {
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方法。