簡體   English   中英

檢索Groovy Closure / Method參數列表

[英]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[]數組, Listvarargs作為參數:

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

嗯,這是限制和選擇!

如果編譯器包含調試符號,則可以檢索參數名稱,但不是通過標准Java Reflection API。

有關示例https://stackoverflow.com/a/2729907/395921,請參閱此文章

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM