我们如何通过arguments数组以动态,javascript样式检索groovy中的闭包/方法的参数列表
例如,我想以这种方式记录消息
def closure = {name,id ->
log.debug "Executing method with params name:${} id:${id}"
}
Run Code Online (Sandbox Code Playgroud)
要么
void method (String name,String id) {
log.debug "Executing method with params name:${} id:${id}"
}
Run Code Online (Sandbox Code Playgroud)
我读过一次关于引用闭包参数列表的方法,但我没有回忆这一点,看看Closure的groovy API 只显示了getParametersType()方法.至于方法,有一种方法可以将方法作为闭包调用,然后我可以检索方法参数
肯
你不会喜欢它(我希望做研究和回答不是我的错),但是:
没有API 可以访问 Groovy或 Java 中声明的参数列表。ClosureMethod
我还研究了相关类型,包括(对于 Groovy)MetaClass和子类型,以及包中的类型org.codehaus.groovy.reflection,以及(对于 Java)包中的类型java.lang.reflect。
此外,我还进行了广泛的谷歌搜索来追踪外星人。;-)
如果我们需要一个可变长度的闭包或方法参数列表,我们可以使用Object[]数组、 aList或varargs作为参数:
def closure = { id, Object... args ->
println id
args.each { println it }
}
closure.call(1, "foo", "bar")
Run Code Online (Sandbox Code Playgroud)
好吧,这就是限制和选择!
| 归档时间: |
|
| 查看次数: |
4666 次 |
| 最近记录: |