我需要一种方法来确定提供的Spring Expression是否可以评估为布尔值。 例如,像“age == 18”这样的表达式可以在SpEL中返回布尔值,但不能返回“age + 10”之类的值。 请注意,在进行此验证时我只会有表达式(因此,我不能只评估表达式并查看返回类型)
答案 0 :(得分:0)
使用JavaCompiler,您可以在内存中编译表达式example,并获得评估结果。
你的内存中编译方法可以做类似的事情(你的表达式是String变量theExpressionToEvaluate)
StringWriter writer = new StringWriter();
PrintWriter out = new PrintWriter(writer);
out.println("public class HelloWorld {");
out.println(" public static void isBoolean() {");
out.println("try {boolean result = " + theExpressionToEvaluate + "; return result;}");
out.println("catch (ClassCastException e) { return false; }");