【发布时间】:2023-03-21 05:42:01
【问题描述】:
我正在开发一个大量使用 javax.script.* 包的项目。我有一种情况,我想创建扩展抽象 Java 类的 JavaScript 对象,就像您可以使用 Invocable.getInterface 来创建实现 Java 接口的 JavaScript 对象一样。这可能吗?如果是这样,你是怎么做到的?
【问题讨论】:
标签: java javascript rhino javax.script
我正在开发一个大量使用 javax.script.* 包的项目。我有一种情况,我想创建扩展抽象 Java 类的 JavaScript 对象,就像您可以使用 Invocable.getInterface 来创建实现 Java 接口的 JavaScript 对象一样。这可能吗?如果是这样,你是怎么做到的?
【问题讨论】:
标签: java javascript rhino javax.script
是的,你可以;以前的海报是错误的。请参阅documentation for JavaAdapter。
【讨论】:
除非你想走在运行时生成字节码的路线(使用BCEL,如下所示),否则不会。您可以使用 proxy classes 对接口进行此操作,但抽象类没有等效项。
如果你真的想尝试 BCEL,你最好的策略是这样做:
byte[]。foo.MyAbstractClass 对应于foo.MyAbstractClassDynamicLangWrapper。ClassLoader 以识别该命名约定并生成类字节并调用defineClass
【讨论】:
java.util.stream 我现在根本无法实现 java 类流类。所以我的问题是在我的情况下,最好的方法是什么?我正在尝试实现一些功能,但这还不够。谢谢