首页 > 解决方案 > 调用方法列表

问题描述

我有一个场景,根据一个变量的值,我会将不同的其他变量设置为空。就像是:

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

现实生活场景比这要长一些,而且未来可能会增长。我想要做的是创建一个包含所有设置器的列表,在开关内只删除不应该执行的那个,然后用相同的值调用它们。这可以实现吗?

标签: java

解决方案


可以将所有这些设置器存储到一个列表中。

我要做的是将它们存储在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));

推荐阅读