检索的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。