我有一个类示例 Callable
在它上面。我把这个示例设置为 Bindings
对象。我需要设置 Callable
nashorn中的字段,用java调用。如何在纳索恩脚本中设置此字段?
脚本的调用方式如下:
//in java
class Options {
Callable<Boolean> handler;
}
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
Bindings bindings = engine.createBindings();
Options options = new Options();
bindings.put("options", options);
engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
engine.eval(script);
Invocable executor = (Invocable) engine;
executor.invokeFunction("init");
在剧本里,我需要设定 handler
在全球范围内 Options
对象:
//in nashorn
function init() {
//How would I set a Callable on this field, from within nashorn?
options.handler = ?
}
我已经看到了(建议重复)如何使用nashorn引擎来调用java对象的问题,但是这个问题是关于从nashorn脚本调用java方法的,而这个问题是关于在nashorn脚本中设置一个可调用的,然后可以从java调用它(基本上相反)。
1条答案
按热度按时间bqujaahr1#
基于本nashorn教程中的“扩展类”部分。测试,为我工作: