检索Groovy Closure / Method参数列表

时间:2010-11-06 17:20:23

标签: grails groovy

我们如何通过参数数组动态地检索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()方法。至于方法,有一种方法可以将方法作为闭包调用,然后我可以检索方法参数

3 个答案:

答案 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/