获取已解析的groovy脚本方法

获取已解析的groovy脚本方法,groovy,groovyshell,Groovy,Groovyshell,我有一个groovy脚本: GroovyShell shell = new GroovyShell(); Script script = shell.parse("def myStuff(a){ return a }"); 如何从script获取所有已声明函数的列表 我已经尝试了script.getMetaClass().getMetaMethods(),但是没有列出myStuff函数。有两种方法可以调用您的方法: 1.您可以在script.getMetaClass().getMethods(

我有一个groovy脚本:

GroovyShell shell = new GroovyShell();
Script script = shell.parse("def myStuff(a){ return a }");
如何从
script
获取所有已声明函数的列表


我已经尝试了
script.getMetaClass().getMetaMethods()
,但是没有列出
myStuff
函数。

有两种方法可以调用您的方法:

1.您可以在
script.getMetaClass().getMethods()中搜索它
输出:

result = 3
5
2.您可以使用
script.invokeMethod(字符串名称、对象参数)
输出:

result = 3
5
输出:

public java.lang.Object Script1.myStuff(java.lang.Object)

找到了
script.getMetaClass().getMethods()
可以在
script.getMetaClass().getMethods()
上找到脚本中是否声明了方法?在上面的例子中,我可以过滤方法
method.getDeclaringClass().getTheClass()==script.getClass()
,但即使如此,我还是得到了3种方法:
myStuff
run
main
(我认为是由groovy编译器注入的).BetoNeto
run
main
方法来自父类-每个Groovy脚本创建一个类(它使用脚本名作为类名),该类扩展了
Groovy.lang.script
类。在
main
方法中,脚本类被初始化,而
run
方法运行脚本主体。因此,如果排除
run
main
方法,则应获得脚本文件中声明的方法列表。
public java.lang.Object Script1.myStuff(java.lang.Object)