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