我们如何通过参数数组动态地检索groovy中的闭包/方法的参数列表
例如,我想以这种方式记录消息
def closure = {name,id ->
log.debug "Executing method with params name:${} id:${id}"
}
OR
void method (String name,String id) {
log.debug "Executing method with params name:${} id:${id}"
}
我读过一次关于引用闭包参数列表的方法,但我没有回忆这一点,并且查看Closure的groovy API只显示 getParametersType()方法。至于方法,有一种方法可以将方法作为闭包调用,然后我可以检索方法参数
肯
答案 0 :(得分:2)
你不会喜欢它(我希望做研究和回答并不是我的坏事),但是:
有 no API可以访问Groovy Closure
或Java Method
中声明的参数列表。
我还查看了相关类型,包括(对于Groovy)MetaClass
,以及org.codehaus.groovy.reflection
包中的子类型和类型,以及{{1中的(Java)类型包裹。
此外,我进行了广泛的Google搜索,以追踪外星人。 ; - )
如果我们需要一个可变长度的闭包或方法参数列表,我们可以使用java.lang.reflect
数组,Object[]
或List
作为参数:
varargs
嗯,这是限制和选择!
答案 1 :(得分:1)
如果编译器包含调试符号,则可以检索参数名称,但不能通过标准Java Reflection API。
请参阅此帖子以获取示例https://stackoverflow.com/a/2729907/395921
答案 2 :(得分:-1)
我想你可能想看看varargs http://www.javalobby.org/articles/groovy-intro3/