【问题标题】:Groovy: Dynamically addings methods with a specific signatureGroovy:动态添加具有特定签名的方法
【发布时间】:2011-02-03 01:39:58
【问题描述】:

所以,我需要动态创建(或注入)方法到具有特定返回类型和方法签名的对象中,因为我们使用的 Java 工具将通过反射找到这些方法并检查 void 类型.方法名称将在运行时确定。

使用元类。 = { ... } 但是添加了一个不显示为常规方法的闭包(即使它可以用作一个),并且还具有返回类型。

我无法修改方法查找代码,而且它不支持 Groovy。

我不能使用 methodMissing() 或 invokeMethod() 因为方法需要实际存在。如果我可以重载 class.getMethods() 我认为这是可能的,但我不知道如何。

有没有办法在 Groovy 中做到这一点?

【问题讨论】:

  • 你能再具体一点吗?即,给出一些示例代码。

标签: java dynamic groovy


【解决方案1】:

您可以使用AST Transformations 在编译时添加代码,但它不适用于您不编译的类,所以我猜这可能行不通。

您可以使用基于 CGLIB 的代理替换该对象。如果您可以更具体地了解相关代码...

编辑:更多信息。 Groovy 元类魔法在 Java 中不可用,除非 Java 代码显式调用 groovyClass.invokeMethod("someMethod",args);。所以没有办法用 MetaClasses 做你要求的事情。可能是CGLIB。

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 2022-08-06
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    相关资源
    最近更新 更多