我希望能够评估存储为字符串的布尔表达式,如下所示:
"hello" == "goodbye" && 100 < 101
我知道在 SO 上已经有很多这样的问题,但我之所以问这个问题是因为我已经尝试了这个问题的最常见答案BeanShell,它允许评估像这样的陈述
"hello" == 100
完全没有问题。有谁知道 FOSS 解析器会因操作数不匹配等原因引发错误?或者 BeanShell 中是否有可以帮助我的设置?我已经尝试过 Interpreter.setStrictJava(true)。
为了完整起见,这是我目前使用的代码:
Interpreter interpreter = new Interpreter();
interpreter.setStrictJava(true);
String testableCondition = "100 == \"hello\"";
try {
interpreter.eval("boolean result = ("+ testableCondition + ")");
System.out.println("result: "+interpreter.get("result"));
if(interpreter.get("result") == null){
throw new ValidationFailure("Result was null");
}
} catch (EvalError e) {
e.printStackTrace();
throw new ValidationFailure("Eval error while parsing the condition");
}
编辑:
我当前拥有的代码返回此输出
result: false
没有错误。我希望它做的是抛出一个 EvalError 或让我知道存在不匹配的操作数的东西。