2016-05-22 7 views
0

私は以下の条件を満たしていることを確認します。それは、私がパラメータincomingProductを受け取ることになる値に基づいてチェックします。したがって、複数の条件がありますが、複数のチェックが実行されるたびに奇妙に見えます。私は同じことを達成することができれば、以下のチェックを別のものにカスタマイズします。Javaクラスで実行される複数のチェックに対するより洗練されたアプローチですか?

String incomingProduct = wokerchoice.getProduct(); 

    if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("CD")) { 
    wokerchoice.setFourceSystem 
    ((String)configuration.getConfiguration().get("CD")); 
    } 

    if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("MODITY")) { 
    wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("MODITY")); 
    } 

    if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("WQEQD")) { 
    wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("WEREQD")); 
    } 

    if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("QRTFI")) { 
    wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("WERFI")); 
    } 

    if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("URES")) { 
    wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("V")); 
    } 

    if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("FXQWNM")) { 
    wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("FXQWNM")); 
    } 

    if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("IERTRD")) { 
    wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("IERTRD")); 
    } 

    if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("UHVMM")) { 
    wokerchoice.setFourceSystem((String)configuration.getConfiguration().get(UHV"MM")); 
    } 

    if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("OPT")) { 
    wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("OPT")); 
    } 

    if (incomingProduct!= null && incomingProduct.equalsIgnoreCase("RECE")) { 
    wokerchoice.setFourceSystem((String)configuration.getConfiguration().get("RECS")); 
    } 

答えて

3

あなたが同じではないので、行うにはいつもの事は地図上の着信と発信のマッピングを置くことです:

Map<String, String> ht = new HashMap<String, String>(){ { put("ONE","ONE"); 
put("OTHER","TWO");} }; 

String cfg = ht.get(incomingProduct.toUpperCase()); 
if (cfg != null) 
    wokerchoice.setFourceSystem((String)configuration 
    .getConfiguration().get(cfg)); 

悲しいことに、Javaはまだ私たちに力を与えるものではありませんリテラルマップを宣言するので、上記の醜い匿名クラスのハックを使用して1つのライナーを取得しました。

入力と出力のマッピングを同じにすることができれば(それは可能ではないかもしれませんが)、リストや文字列の配列を使用することができます。

String[] mapping = {"ONE", "TWO"}; 
String incoming = incomingProduct.toUpperCase(); 
if(Arrays.asList(mapping).contains(incoming)){ 
wokerchoice.setFourceSystem((String)configuration 
     .getConfiguration().get(incoming)); 
} 

本当に。

String incoming = incomingProduct.toUpperCase(); 
Object cfg= configuration.getConfiguration().get(incoming); 
If (cfg != null) 
    wokerchoice.setFourceSystem((String)cfg); 
+2

私は* '*'を好むでしょう。getConfiguration().get()は値がない場合はnullを返します。 Map'](http://docs.oracle.com/javase/8/docs/api/java/util/Map.html)インタフェース(および['HashMap'](https://docs.oracle.com/javase) /8/docs/api/java/util/HashMap.html)実装)を 'Hashtable'に変換します。 –

+0

気軽に編集してください。私は電話で答えた。 –

+0

@ElliottFrischあなたはArrayの以前のアプローチをアドバイスしてください –

関連する問題