我需要动态计算 Java 应用程序中作为字符串提供的 Java 表达式。该表达式是一个三元运算符,由于它来自 JSONObject,因此将来可能会发生变化。此外,表达式中使用的变量的值将在运行时提供。如何在 Java 应用程序中实现这种动态评估?
“值1 < 0 ? 3:5"
为了解决这个问题,我使用了groovy.lang.GroovyShell;
public Object expressionEvaluator(String expression, Map<String,
Integer> variables) {
var shell = new GroovyShell();
variables.forEach((name, value) -> shell.setVariable(name, value));
return shell.evaluate(expression);
}
}