Retrieve Groovy Closure/Method parameters list

后端 未结 3 640
孤城傲影
孤城傲影 2020-12-31 19:19

How do we retrieve the list of parameters of a closure/method in groovy dynamically, javascript style through the arguments array

say for example that i want to log

相关标签:
3条回答
  • 2020-12-31 19:34

    The parameter names can be retrieved if the compiler included debugging symbols, though not through the standard Java Reflection API.

    See this post for an example https://stackoverflow.com/a/2729907/395921

    0 讨论(0)
  • 2020-12-31 19:42

    I think you may want to take a look at varargs http://www.javalobby.org/articles/groovy-intro3/

    0 讨论(0)
  • 2020-12-31 19:53

    You won't like it (and I hope it's not my bad to do research and to answer), however:

    There is no API to access the list of parameters declared in a Groovy Closure or in a Java Method.

    I've also looked at related types, including (for Groovy) MetaClass, and sub-types, and types in the org.codehaus.groovy.reflection package, and (for Java) types in the java.lang.reflect package.

    Furthermore, I did an extensive Google search to trace extraterrestrials. ;-)

    If we need a variable-length list of closure or method arguments, we can use an Object[] array, a List, or varargs as parameters:

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

    Well, that's the limitations and options!

    0 讨论(0)
提交回复
热议问题