メソッドのリストを呼び出します

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=209429&siteId=1
おすすめ