我需要一种方法来找出提供的弹簧表达式是否可以评估布尔值。例如,诸如" age == 18"之类的表达方式可以返回Spel中的布尔值,但不能返回"年龄 10"之类的表达式。请注意,我在执行此验证时只有表达式(因此,我不能仅评估表达方式并参见返回类型)
使用javacompiler,您可以像在本示例中一样在内存中进行编译并获得评估的结果。
您的内存中编译的方法可以做类似的操作(您的表达式为字符串变量expressiveToaluate)
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; }");