我正在尝试编写 JavaScript,它将定义一个扩展现有 Java 类的类,从 JSR223 调用ScriptEngine
。我知道JavaAdapter 适用于 Interface,但不适用于 Class。
ScriptEngine js = new ScriptEngineManager().getEngineByExtension("js");
js.eval("new java.lang.Runnable {run: function() { ... } }"); // works
js.eval("new java.util.TimerTask {run: function() { ... } }"); // throws
我知道这是我应该期待的文档。我也知道,一旦我可以切换到 Nashorn,这一切都会消失,我将可以很好地访问Java.extend()
等,但目前我还坚持使用 JDK7。
鉴于这一切,有没有办法做到这一点?我认为我的后备方案将直接切换到 Mozilla 的原生 Rhino 绑定,但我更愿意尽可能保持抽象。