除了 switch case 和 if/else 之外,如何在 java 中实现众多条件?
How to implement numerous conditions in java other than switch case and if/else?
需要实现一个要求,如果使用 switch case 实现,代码流将根据很多情况来决定,或者很多 if/else !
要实现的示例代码:
if(flag='1')
Invoke a new route
else If(flag='2')
Invoke route2
.
.
.
.
else if(flag= 30)
Invoke route 30
除了 if/else 语句或 switch case 之外,是否有更好的方法来编写此类 case?
类似于 jBPM
等工作流引擎的内部实现,但实际上我不能包含工作流引擎,因为它会使应用程序变得沉重!
感谢任何建议!
这就是我上面所说的。
import java.util.function.*;
public class MethodCalls {
public static void main(String[] args) {
new MethodCalls().start();
}
public void start() {
Map<Integer, Function<Integer, Integer>> callTable = new HashMap<>();
callTable.put(1, a -> prod(a));
callTable.put(2, a -> sub(a));
Random r = new Random();
r.ints(10, 1, 3).forEach(b -> System.out.println("The answer is "
+ callTable.get(b).apply(r.nextInt(20) + 20) + "\n"));
}
public int prod(int v) {
System.out.println("Multiplying " + v + " by " + 40);
return v * 40;
}
public int sub(int v) {
System.out.println("Subtracting " + 30 + " from " + v);
return v - 30;
}
}
这只是一个玩具,但它展示了通过调用 table 来增强 switch
and/or if/else
语句的可能性。您可能需要几个 maps
来处理不同的 interface
类型,甚至声明您自己的 functional interfaces
来处理其他参数。您甚至可以通过在 runtime
.
期间将 reflection
合并到转换函数来使其更具动态性
需要实现一个要求,如果使用 switch case 实现,代码流将根据很多情况来决定,或者很多 if/else !
要实现的示例代码:
if(flag='1')
Invoke a new route
else If(flag='2')
Invoke route2
.
.
.
.
else if(flag= 30)
Invoke route 30
除了 if/else 语句或 switch case 之外,是否有更好的方法来编写此类 case?
类似于 jBPM
等工作流引擎的内部实现,但实际上我不能包含工作流引擎,因为它会使应用程序变得沉重!
感谢任何建议!
这就是我上面所说的。
import java.util.function.*;
public class MethodCalls {
public static void main(String[] args) {
new MethodCalls().start();
}
public void start() {
Map<Integer, Function<Integer, Integer>> callTable = new HashMap<>();
callTable.put(1, a -> prod(a));
callTable.put(2, a -> sub(a));
Random r = new Random();
r.ints(10, 1, 3).forEach(b -> System.out.println("The answer is "
+ callTable.get(b).apply(r.nextInt(20) + 20) + "\n"));
}
public int prod(int v) {
System.out.println("Multiplying " + v + " by " + 40);
return v * 40;
}
public int sub(int v) {
System.out.println("Subtracting " + 30 + " from " + v);
return v - 30;
}
}
这只是一个玩具,但它展示了通过调用 table 来增强 switch
and/or if/else
语句的可能性。您可能需要几个 maps
来处理不同的 interface
类型,甚至声明您自己的 functional interfaces
来处理其他参数。您甚至可以通过在 runtime
.
reflection
合并到转换函数来使其更具动态性