我正在开发一个大量使用javax.script。*包的项目。我有一种情况,我想创建扩展Abstract Java类的JavaScript对象,就像你可以使用Invocable.getInterface来创建实现Java接口的JavaScript对象一样。这可能吗?如果是这样,你是怎么做到的?
答案 0 :(得分:2)
是的,你可以;以前的海报是错的。请参阅documentation for JavaAdapter。
答案 1 :(得分:0)
除非你想在运行时使用生成字节码的路径(使用BCEL如下),否则不行。你可以使用proxy classes的接口来完成它,但是没有抽象类的等价物。
如果您真的想尝试BCEL,那么您最好的策略是:
byte[]
字节码,扩展抽象类并将每个抽象方法委托给JavaScript。foo.MyAbstractClass
对应foo.MyAbstractClassDynamicLangWrapper
。ClassLoader
以识别该命名约定并生成类字节并调用defineClass