-1

需要实现一个要求,如果使用 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 案例之外,还有更好的方法来编写此类案例吗?

类似于工作流引擎的内部实现的东西,jBPM但我实际上不能包含工作流引擎,因为它使应用程序变得繁重!

任何建议表示赞赏!

4

1 回答 1

1

这就是我上面所说的。


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

这只是一个玩具,但它展示了使用调用表来增加你的switch和/或语句的可能性。if/else你可能需要几个maps来处理不同的interface类型,甚至声明你自己的functional interfaces来处理额外的参数。您甚至可以通过reflectionruntime.

于 2019-05-07T19:37:33.787 回答