java - 调用方法列表
问题描述
我有一个场景,根据一个变量的值,我会将不同的其他变量设置为空。就像是:
switch (object.getControllerVariable()){
case "A":
object.setB(null);
object.setC(null);
break;
case "B":
object.setA(null);
object.setC(null);
break;
case "C":
object.setA(null);
object.setC(null);
break;
}
现实生活场景比这要长一些,而且未来可能会增长。我想要做的是创建一个包含所有设置器的列表,在开关内只删除不应该执行的那个,然后用相同的值调用它们。这可以实现吗?
解决方案
您可以将所有这些设置器存储到一个列表中。
我要做的是将它们存储在HashMap<String, Consumer<TypeOfObject>>
:
HashMap<String, Consumer<TypeOfObject>> setters = new HashMap<>();
setters.put("A", x -> x.setA(null));
setters.put("B", x -> x.setB(null));
setters.put("C", x -> x.setC(null));
然后您可以执行以下操作:
setters.entrySet().stream()
.filter(x -> !x.getKey().equals(object.getControllerVariable()))
.forEach(x -> x.getValue().accept(object));
推荐阅读
- ibm-midrange - RPGLE 子文件程序中的记录选择
- c# - 如何知道列是否在实体框架中具有外键
- javascript - 如何使自定义 $option 扩展计算或方法功能 vue
- php - 正则表达式删除任何 p 标记之前的文本
- html - Glyphicon-shopping-cart 不显示 iCON
- java - 写入带有子文件夹的新文件时自动创建整个路径
- c# - MSSQL CLR 函数 webreqest 401 未授权
- ios - FirebaseAnalytics:将事件记录到多个项目
- powershell - Powershell Add-Content 未添加到文件末尾
- php - Laravel 的返回值预计为 'illuminate\Http\Response',返回 'string'