所以这是交易:我阅读了这篇文章 并开始尝试使用 Rhino。到目前为止,我了解了如何调用一个函数,以及如何获得它的返回。我不能做的是传递函数的参数。这是我的代码:
ScriptEngineManager engineMgr = new ScriptEngineManager();
ScriptEngine engine = engineMgr.getEngineByName("ECMAScript");
String js = "";
js += "function add(a, b) {";
js += " var sum = parseFloat(a) + parseFloat(b);";
js += " println(sum);";
js += "}";
engine.put("a", 3);
engine.put("b", 5);
Object returnn = null;
try {
engine.eval(js);
Invocable invocableEngine = (Invocable) engine;
returnn = invocableEngine.invokeFunction("add");
} catch (ScriptException e) {
System.out.println("Script error.");
} catch (NoSuchMethodException e) {
System.out.println("Method error.");
}
System.out.println(returnn);
我没有任何异常,但返回返回为 NaN。我尝试打印 a 和 b (参数),它们总是为空。如果这不是调用函数的最佳方式,请指出一些有用的线程。(我自己没有找到)
TYVM 提前