今天看到 这个帖子,原来自己是使用beanshell解决这个问题,看到有人回答用js引擎这个东西,也都拿来试试看怎么玩这个东西,记录之。
一般运行这种公式,可以用来做公式定义器,获取是规则引擎之类的,感觉还是挺有用的,挺好玩的。
beanShell是这样玩的:
public static void testBeanShell() throws EvalError { Interpreter interpreter = new Interpreter(); //设置参数 interpreter.set("param", "12312-"); //运行脚本 Object result = interpreter.eval(" int k=1+2*3+3/4-2*6/3-2+4;" + "System.out.println(param);" + "return k "); System.out.println(result); }js引擎是这么玩:
public static void testJsEngine() throws ScriptException, NoSuchMethodException { //javascript引擎获取 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); Object result = 1; String script = " function test(params){var k =1+2*3+3/4-2*6/3-2+4;println(params+k); return k; }"; // 编译 engine.eval(script); // 调用对应function Invocable inv = (Invocable) engine; Object res = inv.invokeFunction("test", result); // 输出返回值 System.out.println(res); }