0

Javaで動的な条件文を作成したいのです
が、ファイル内の式は次のとおりです。何百もの式があり、それらは変化し続けます

0001|((condition1 == 100) && ((condition2 == 1) || (condition2 == 2) || (condition2 == 3)) && (condition3 > 74))
0002|((condition1 == 100) && ((condition2 == 1) || (condition2 == 2) || (condition2 == 3)) && (condition3 > 59) && ((condition4 == 3) || (condition5 > 30)))

これらの式は私のクラスでハードコーディングされています。

if(condition1==100 && ((condition2 == 1) || (condition2 == 2) || (condition2 == 3))){

if(condition3>74){
return "0001"
}
if(condition3>59 && ((condition4 == 3) || (condition5 > 30))){
return "0002"
}

}

次のような動的な条件文を作成したい

最初に、condition1 == 100のすべての式をチェックし、
次に((condition2 == 1)||(condition2 == 2)||(condition2 == 3))をチェックし
てから、最終条件に従って値を返します。

最初にDFS、次にBFSのようなものです

Javaで最初にDepthをチェックし、次にBredthFirstをチェックする方法を教えてくれる人がいますか?

4

1 に答える 1

1

あなたのケースは次のとおりです。非常に多くの条件を定義し、それを継続的に変更したい。動的に式を変更し、新しい条件を定義するためのソリューションが必要です。

あなたのケースのような動的な状況には2つの解決策があります:

  1. を使用しRule Engineます。これには非常に利点があります。詳細については、http://java.sun.com/developer/technicalArticles/J2SE/JavaRule.html を参照してください。また、オープン ソースの実装については、こちらを参照してください。
  2. Dynamic LanguageorScript LanguageScriptapiを使用します。

2番目のソリューションでは、いくつかの選択肢があります。私は次のようにいくつか書いています:

JRubyWeb で検索するだけでわかるような、より動的な言語があります。ScriptJava での api の詳細については、こちらを参照してください。

編集:

サンプルとして、次のように使用できますBeanShell Script Language

test.bsh最初に、ブロー コンテンツを含む名前のファイルを作成します。

if(variable_1 == 100 )
{
   System.out.println("Sample condition checked and is true.");
}
else
{
   System.out.println("Sample condition checked and is false.");
}

variable_1Java からの2 番目のセット:

import bsh.*;

Interpreter bsh = new Interpreter ();
bsh.set ("variable_1", 100);

最終呼び出しスクリプトでは次のようになります。

 bsh.source (script);

結果は次のようになります。

Sample condition checked and is true.

このアプローチにより、test.bsh再コンパイルや再起動なしでコンテンツを変更できます。

于 2012-05-14T06:38:56.670 に答える