user1288455:
私は1つの変数の値に応じて、私はヌルなど、さまざまな他の変数を設定します、シナリオを持っています。何かのようなもの:
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;
}
現実のシナリオでは、それよりも少しlenghtierあり、将来的に成長する可能性が高いです。私は何をしたかったことは、すべてのセッターを持つリストを作成作成されるだろう、スイッチ内部だけで実行すべきでないものを削除し、時と全て同じ値でそれらを呼び出します。これを実現することができますか?
スイーパー:
あなたはできるリストにすべてのそれらのセッターを格納します。
私は何だろうと、それらを格納することです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));