reflection - 从 Groovy 方法闭包获取方法

标签 reflection groovy

在 groovy 中,.& 运算符转换闭包中的方法。在Java中使用反射Method对象,可以获取方法名称、参数名称和类型。有没有办法从闭包中获取所有方法反射信息?到目前为止我只能获取参数类型(通过 closure.parameterTypes)

最佳答案

当你从一个方法创建一个闭包时,你并没有真正链接一个java.lang.Method而只是一个名称:如果你有不同的方法具有相同的名称,但不同的参数,它会起作用的。

当您使用参数调用闭包时,groovy 会尝试查找适合参数的最佳方法(与 Groovy 中通常一样)。

因此,您无法从闭包中获取Method,但您可以获取名称:

def closure = instance.@myMethod
assert "myMethod" == closure.method

然后您可以从 owner 类中找到所有可能的方法:

def methods = closure.owner.metaClass.respondsTo(closure.owner, closure.method)

关于reflection - 从 Groovy 方法闭包获取方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35677830/

相关文章:

java - 反射(reflect)一个只有包级访问权限的类

c# - 如何获取 Controller 的 POST 操作方法?

groovy - Groovy 对象可以像带参数的函数一样被调用吗?

java - 如何使用 Elasticsearch 的 java api 调用 Groovy 脚本

java - Groovy:如何定义带参数的 java 可调用对象并使其可用于 groovy shell?

gradle - 等同于REXEC的Gradle

c# - 使用反射在构造函数中初始化(列表)属性

C# GetMethod 与 GetRuntimeMethod

Java防止反射

java - 如何频繁更新 Hazelcast map