获取已解析的groovy脚本方法
我有一个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(
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编译器注入的).BetoNetorun
和main
方法来自父类-每个Groovy脚本创建一个类(它使用脚本名作为类名),该类扩展了Groovy.lang.script
类。在main
方法中,脚本类被初始化,而run
方法运行脚本主体。因此,如果排除run
和main
方法,则应获得脚本文件中声明的方法列表。
public java.lang.Object Script1.myStuff(java.lang.Object)