【发布时间】:2013-07-01 23:15:31
【问题描述】:
只是想知道在 Nashorn 中是否可以在运行时扩展 Java 类,类似于 Groovy 的元类?
我一直在研究 InvokeDynamic,但我不确定这是否是我想要的,Java.extend 允许我扩展一个类,但我只有在实例化后才能获得对对象的引用,这发生在外部我的应用程序并传入。所以我只收到 Object 实例。
从我的研究看来,Groovy 方法实际上在运行时扩展了 Class,并且 Class 的任何实例化都获得了扩展方法。
如果我的术语不正确但我是 Java 新手,请原谅我。
谢谢
【问题讨论】:
-
你的意图是什么? Groovy 的元类不是 Java 的
extends关键字(Groovy 也有)。invokedynamic是一个新的字节码。也许 javascript 的原型是你想要的? -
您好,Will P。我要做的是在运行时动态扩展 Nashorn 中的 Java 类或 Java 类实例。我可以使用原型设计来扩展 Java 类,如果我实例化该类,这将起作用,但我不创建对象,它们是在其他地方创建并传入的。据我所知,我不能扩展 Java 类在 Nashorn 中使用原型设计实例。
-
你能发布一个你想做的例子吗?你想为你收到的对象添加一个方法,或者类似的东西?
标签: java javascript groovy metaprogramming nashorn