动态条件声明

时间:2012-05-14 05:41:08

标签: java conditional-statements

我想在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"
}

}

我想创建像

这样的动态条件语句

首先我检查所有有条件1 == 100的表达式 那么((condition2 == 1)||(condition2 == 2)||(condition2 == 3))
然后根据最终条件返回值

它类似于第一个DFS,然后是BFS

有些人可以让我知道如何检查第一个深度然后再检查Bredth First in java

1 个答案:

答案 0 :(得分:1)

您的情况是:您需要定义很多条件并持续更改它。您需要有一个变化动态表达式的解决方案并定义新条件。

动态情况有两种解决方案,例如你的情况:

  1. 使用Rule Engine。这非常有益,您可以从http://java.sun.com/developer/technicalArticles/J2SE/JavaRule.html查看更多信息 你可以从here看到它的开源实现。
  2. 使用Dynamic LanguageScript LanguageScript api。
  3. 在第二个解决方案中你有几个选择。我在下面写了一些:

    还有更多动态语言,例如JRuby,您可以通过简单的网络搜索来查看它。 您可以从here中阅读有关Script 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_1来自java:

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

    并在最终调用脚本中如下:

     bsh.source (script);
    

    结果如下:

    Sample condition checked and is true.
    

    通过这种方法,您可以更改test.bsh内容,而无需重新编译或重新启动。