package com.zt.life.modules.mainPart.test.service; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.runtime.function.AbstractFunction; import com.googlecode.aviator.runtime.function.FunctionUtils; import com.googlecode.aviator.runtime.type.AviatorDouble; import com.googlecode.aviator.runtime.type.AviatorObject; import org.junit.Test; import java.beans.Expression; import java.util.HashMap; import java.util.Map; public class testService { public static void main(String[] args) { // 注册函数 AviatorEvaluator.addFunction(new AddFunction()); // 创建参数映射 Map paramMap = new HashMap<>(); paramMap.put("a", 5); paramMap.put("b", 2); // 执行表达式 Object result = AviatorEvaluator.execute("add(a, b)", paramMap); System.out.println("Result: " + result); } static class AddFunction extends AbstractFunction { @Override public AviatorObject call(Map env, AviatorObject arg1, AviatorObject arg2) { Number left = arg1.numberValue(env); Number right = arg2.numberValue(env); // 执行数学计算 double result = (Math.pow(left.doubleValue(), right.doubleValue()) + Math.sqrt(right.doubleValue()) - Math.log(right.doubleValue())) / (Math.pow(right.doubleValue(), left.doubleValue()) + Math.log10(left.doubleValue())); return new AviatorDouble(result); } @Override public String getName() { return "add"; } } }