条件字符串解析器在Java API中?

Zaw*_* oo 5 java

我想解决以下condtion字符串.因为我想在我的项目中支持动态条件.

a != 0 && b > 5
Run Code Online (Sandbox Code Playgroud)

我的预期计划是

public boolean resolve() {
    String condition = "a != 0 && b > 5";
    Map<String, Object> paramMap = new HashMap<String, Object>;
    paramMap.put("a", 2);
    paramMap.put("b", 6);
    boolean result = ConditionResolver.resolve(condition, paramMap);
    if(result) {
        //do something
    }
} 
Run Code Online (Sandbox Code Playgroud)

更新:

我不是要解决数学等式,如下所示

((a + b) * y) /x
Run Code Online (Sandbox Code Playgroud)

Ren*_*ink 6

从java 1.6开始ScriptEngine,如果这对你来说足够和/或你不想引入另一个库,你可以使用和评估javascript.

ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("javascript");
SimpleBindings bindings = new SimpleBindings();

bindings.put("a", 0);
bindings.put("b", 6);

boolean firstEval =  (Boolean) scriptEngine.eval("a != 0 && b > 5", bindings);
System.out.println(firstEval);

bindings.put("a", 2);
bindings.put("b", 6);

boolean secondEval =  (Boolean) scriptEngine.eval("a != 0 && b > 5", bindings);
System.out.println(secondEval);
Run Code Online (Sandbox Code Playgroud)

产量

false
true
Run Code Online (Sandbox Code Playgroud)