Script Evaluator 用于动态执行 Java 代码块。
计算客单价,即 amount
金额除以 count
人数,四舍五入:
IScriptEvaluator se = CompilerFactoryFactory.getDefaultCompilerFactory().newScriptEvaluator(); // ① se.setDefaultImports("java.math.BigDecimal"); // ② se.setParameters(new String[]{"amount", "count"}, new Class[]{double.class, long.class}); // ③ se.setReturnType(double.class); // ④ se.cook("" + "if (count == 0) return 0.0;/n" + "BigDecimal amountBigDecimal = BigDecimal.valueOf(amount);/n" + "BigDecimal countBigDecimal = BigDecimal.valueOf(count);/n" + "return amountBigDecimal.divide(countBigDecimal, BigDecimal.ROUND_HALF_UP).doubleValue();"); // ⑤ se.evaluate(new Object[]{100.0, 2L}); // ⑥
① 使用工厂模式创建默认的 Script Evaluator 实例;
② 默认引入 java.math.BigDecimal
类,或者在 Java 代码块中显式引入 import java.math.BigDecimal;
;
③ 设置参数名和参数类型;
④ 设置返回值类型;
⑤ 编译 Java 代码块;
⑥ 执行 Java 代码块。