[英]Retrieve Groovy Closure/Method parameters list
我們如何通過arguments數組以動態,javascript樣式檢索groovy中的閉包/方法的參數列表
例如,我想以這種方式記錄消息
def closure = {name,id ->
log.debug "Executing method with params name:${} id:${id}"
}
要么
void method (String name,String id) {
log.debug "Executing method with params name:${} id:${id}"
}
我讀過一次關於引用閉包參數列表的方法,但我沒有回憶這一點,看看Closure的groovy API只顯示了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。
我想你可能想看看varargs http://www.javalobby.org/articles/groovy-intro3/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.