java - 如何在java中不使用if、switch、条件运算符、反射、while语句来调用不同的方法

标签 java

我遇到了一个问题..我主要从 java 中的命令行参数接收 3 种类型的输入..比如说 A、B、C。基于这三种输入,我需要调用相应的方法(我定义了 3 种方法,其中一种方法是为每个输入)。

条件是:我们不应该使用 if、switch、条件运算符、while 语句、反射

任何人请分享你的想法

最佳答案

您可以使用 Map以便将 3 个可能的输入映射到 3 个相应的方法。

例如,假设输入是 String要执行的逻辑是一个接受 String 的方法。 :

Map<String,Consumer<String>> methods = new LinkedHashMap<>();
methods.put("A",a->methodA(a));
methods.put("B",a->methodB(a));
methods.put("C",a->methodC(a));

现在,给定输入 x ,您可以使用

调用所需的方法
methods.get(x).accept(input);

您可以使用getOrDefault而不是get如果您想在输入 x 时调用默认方法在 Map 中找不到:

methods.getOfDefault(x, a -> System.out.println("cannot process input " + a)).accept(input);

关于java - 如何在java中不使用if、switch、条件运算符、反射、while语句来调用不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48607404/

相关文章:

Java 8 : functional way to write sort, 同时过滤和计数

java - RejectedExecutionException 后调用线程不会停止

java - 如何恢复 Netbeans main() 日志?

java - 泛型中类型参数中的常量

java - 将coverage.ec文件上传到Android Sonar

java - Android Studio 3.0.1(错误 :The 'java' plugin has been applied, 但与 Android 插件不兼容。)

Java JAXB 编码器更改 < 但不更改 > 的编码

java - 有没有办法在maven中声明两个nexus url来搜索单个 Artifact

java - 这个 "YYYY-MM-DD 00:00:00+00:00"是哪种 Java 日期格式?

java - 如何在 DynamoDB 的 BatchGetItem 查询中指定范围键条件?