2017-02-20 3 views
-4

私はJavaでかなり新しいです。多くの条件を置き換えるより良い方法

多くの多くの if文を置き換えるインテリジェントな方法がある場合は、お知らせしたいと思います。

問題: 私は、受信メッセージ内のタグをチェックするバリデータークラスを持っているとしましょう。各タグは、私のアプリケーションに必須でもなくてもかまいません。

代わりにif文の多くを使用する:

if (isExistTag1) 
else if (isExistTag2) 
else if (isExistTag3) 
. 
. 
. 
else if (isExistTagN) 

改善方法であることができますか?

ありがとうございます。

+1

スイッチケースを試しました – SachinSarawgi

+0

これらのすべての 'if'ブロックは同じことをしていますか?同様のこと? – khelwood

+1

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

答えて

3

多くの可能性のうち一つはリストを使用することです:

private List<String> validTags = Arrays.asList(
    tag1, // 
    tag2, // 
    tag3); 

public boolean isTagValid(String tag) { 
    return validTags.contains(tag); 
} 
1

あなたの条件文の一つがtrueで、残りは常にfalseている、あなたは配列やArrayListRunnableのsのいずれかを使用することができれば。基本的には、配列またはArrayListの内部で定義された独自のメソッドの各条件付き内部に存在するすべてのロジックを持つことになります。

List<Runnable> conditions = new ArrayList<>(); 
conditions.add(new Runnable()->{/*code to execute if condition 0 is true*/}); 
conditions.add(new Runnable()->{/*code to execute if condition n is true*/}); 


conditions.get(translatedBoolean).run(); 

これはもう少しエレガントなアプローチであり、除去することができます:次に、あなただけのあなただけのように同じようArrayListを参照することができ、その時点で0から始まるint範囲にあなたのboolean条件値を変換する必要があります最後の条件のみが不要な処理時間true

値を返すか、パラメータを渡す必要がある場合は、Javaが提供する他の機能インタフェースもあります。

+0

各タグはtrueまたはfalseです。私は最初の偽を持って来たときに私は入ってくるメッセージをドロップします – Asfbar

+0

あなたはこのリストを使用する方法についていくつかの詳細を提供できますか?ブール値とは何ですか? – Chris311

関連する問題