在运行时,我正在获取一个类的方法名称列表,并且我想调用这些方法。我了解如何从这里完成第一部分:
http://docs.codehaus.org/display/GROOVY/JN3535-Reflection
GroovyObject.methods.each{ println it.name }
我似乎无法找到有关如何在获取方法名称后调用该方法的信息。
我想要的是到达这里:
GroovyObject.methods.each{ GroovyObject.invokeMethod( it.name, argList) }
我似乎找不到正确的语法。以上似乎假设我已经重载了 GroovyObject 类的默认 invokeMethod,这不是我想要的方向。
最佳答案
一旦您收到 MetaMethod
元类中的对象,您可以调用 invoke
就可以了。例如:
class MyClass {
def myField = 'foo'
def myMethod(myArg) { println "$myField $myArg" }
}
test = new MyClass()
test.metaClass.methods.each { method ->
if (method.name == 'myMethod') {
method.invoke(test, 'bar')
}
}
或者,您可以直接使用名称:
methodName = 'myMethod'
test."$methodName"('bar')
关于groovy - 如何在 Groovy 中动态调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8715851/