Ale*_*rge 5 javascript java scripting rhino
在sun.org.mozilla版本的Rhino中,JavaAdapter根据此错误消息,仅将接口作为其第一个参数而不是任何其他类.
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorExcep
tion: JavaAdapter: first arg should be interface Class (<Unknown source>#11) in
<Unknown source> at line number 11
Run Code Online (Sandbox Code Playgroud)
有没有什么方法,无论多么hacky,通过Rhino扩展一个抽象类(或普通类)?
这是违规代码:
var j = new JavaAdapter(foo.bar.abstractClass, {
field : "test",
method : function () {
print("on enable");
}
});
Run Code Online (Sandbox Code Playgroud)
对于Sun版本的Rhino ,另一个答案是正确的.如果转换到原始(Mozilla)Rhino是你的选择,那么从问题的措辞中得出的结论并不完全清楚.
具体来说,当Sun将Rhino添加到Java时," 由于足迹和安全原因,一些组件被排除在外 ",其中一个是Mozilla的JavaAdapter.Sun编写了自己的"JavaAdapter",但它比Mozilla更小更简单,它只能用于实现单个Java接口.Mozilla的原始JavaAdapter没有这样的限制:我一直用它来实现抽象类.
它与一些模糊的哲学差异无关,比如"JavaScript与Java实际上不是'OO'".Sun认为"使用JavaAdapter扩展Java类或实现多个接口是非常罕见的"(同上)并决定删除此功能.
如果使用您的代码发送850KB jar文件是可以接受的,那么抓住Mozilla Rhino并实现您想要的所有抽象类!
| 归档时间: |
|
| 查看次数: |
1998 次 |
| 最近记录: |