2
我想在Javascript中使用Nashorn来执行每个函数,这是我在Java中定义的。我如何在Nashorn中调用带有参数的匿名函数?
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine eng = mgr.getEngineByExtension("js");
eng.put("script", new ScriptAPI());
try {
eng.eval("script.each([1,2,3], function(i){ print('i = ' + i); });");
} catch(ScriptException e)
{ e.printStackTrace(); }
正如你所看到的,我的脚本调用script.each
,其中script
已经被定义为ScriptAPI
的一个实例,它看起来如下:
public class ScriptAPI {
public void each(Object[] arr, Runnable function) {
for(Object o : arr) function.run();
}
}
但是,您可能已经注意到,我没有通过Object o
的功能;这是因为function.run
没有任何参数 - 所以我怎么能传递参数给这个匿名函数?
对于那些试图找出这个工作:** JS:**测试(功能(){打印(一个); }); ** Java:** public void test(Consumer