public interface Expression {
/**
* 根据表达式串、参数解析表达式并返回指定类型
*
* @param T 返回类型
* @param expr 表达式串
* @param args 参数列表
* @return T 返回对象
*/
public <T> T eval(Class<T> T, String expr, Map<String, Object> args);
}
public class SpelExpression implements Expression {
ExpressionParser parser = new SpelExpressionParser();
public <T> T eval(Class<T> T, String expr, Map<String, Object> args) {
EvaluationContext context = new StandardEvaluationContext();
for (Entry<String, Object> entry : args.entrySet()) {
context.setVariable(entry.getKey(), entry.getValue());
}
return parser.parseExpression(expr).getValue(context, T);
}
// public static void main(String[] args) {
// Expression e = new SpelExpression();
// String expr = "#a > #b ? '11111111' : '2222222222'";
// Map<String, Object> params = new HashMap<String, Object>();
// params.put("a", 34);
// params.put("b", 35);
// System.out.println(e.eval(String.class, expr, params));
// }
}