0

我需要一种方法来确定提供的 Spring Expression 是否可以评估为布尔值。例如,像“age == 18”这样的表达式可以在 SpEL 中返回布尔值,但不能返回像“age + 10”这样的表达式。请注意,在进行此验证时,我手头只有表达式(因此,我不能只评估表达式并查看返回类型)

4

1 回答 1

0

使用JavaCompiler,您可以在内存中编译此示例中的表达式并获得评估结果。

您的内存中编译方法可以执行类似的操作(您的表达式是字符串变量 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; }");    
于 2015-05-19T19:34:26.580 回答