我想解决以下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)
从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)
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |