如何在Groovy中动态调用方法?

如何在Groovy中动态调用方法?,第1张

概述在运行时,我正在抓取一个类上的方法名称列表,我想调用这些方法.我了解如何从这里完成第一部分: http://docs.codehaus.org/display/GROOVY/JN3535-Reflection GroovyObject.methods.each{ println it.name } 我似乎找不到信息是一旦我抓住了它的名字,那么如何调用一个方法. 我想要的是到达这里: GroovyO 在运行时,我正在抓取一个类上的方法名称列表,我想调用这些方法.我了解如何从这里完成第一部分:
http://docs.codehaus.org/display/GROOVY/JN3535-Reflection

GroovyObject.methods.each{ println it.name }

我似乎找不到信息是一旦我抓住了它的名字,那么如何调用一个方法.

我想要的是到达这里:

GroovyObject.methods.each{ GroovyObject.invokeMethod( it.name,argList) }

我似乎找不到正确的语法.以上似乎假设我已经重载了GroovyObject类的默认invokeMethod,这不是我想去的方向.

解决方法 从Metaclass获取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中动态调用方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1234959.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存