检索的Groovy闭包/方法的参数列表

问题描述:

我们如何获取的常规动态封闭/方法的参数列表,通过参数数组的JavaScript风格检索的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}" 
} 

我约的方式来引用的封闭的参数列表读取一次,但我没有这方面的记忆,并在看groovy API Closure只显示getParametersType()方法。至于方法,有一种方法来调用一个方法作为闭合,然后我可以检索方法参数

你不会喜欢它(我希望这不是我不好做研究并回答),但是:

没有 API访问的一个Groovy Closure或在Java Method声明参数列表。

我也查看过相关的类型,包括(对于Groovy)MetaClass,子类型和org.codehaus.groovy.reflection包中的类型,以及java.lang.reflect包中的(对于Java)类型。

此外,我做了一个广泛的谷歌搜索痕迹外星人。 ;-)

如果我们需要的关闭或方法参数的可变长度的列表,我们可以使用一个Object[]阵列,List,或varargs作为参数:

def closure = { id, Object... args -> 
    println id 
    args.each { println it } 
} 
closure.call(1, "foo", "bar") 

嗯,这是限制和选项!

如果编译器包含调试符号,则可以检索参数名称,尽管不是通过标准的Java Reflection API。

看到这个职位为例https://*.com/a/2729907/395921

我想你可能想看看可变参数http://www.javalobby.org/articles/groovy-intro3/