获取已解析的 groovy 个脚本方法

Get parsed groovy script methods

我有这个 groovy 脚本:

GroovyShell shell = new GroovyShell();
Script script = shell.parse("def myStuff(a){ return a }");

如何从 script 中获取所有已声明函数的列表?

我已经试过 script.getMetaClass().getMetaMethods()myStuff 功能未列出。

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

1。您可以在script.getMetaClass().getMethods()

中搜索
public static void main(String[] args) {
    GroovyShell shell = new GroovyShell();
    Script script = shell.parse("def myStuff(a){ return a }");

    script.getMetaClass()
            .getMethods()
            .stream()
            .filter(it -> it.getName().equals("myStuff"))
            .findAny()
            .ifPresent(method -> {
                final Object result = method.doMethodInvoke(script, new Object[]{3});
                System.out.println("result = " + result);
            });
}

输出:

result = 3

2。您可以使用 script.invokeMethod(String name, Object args)

public static void main(String[] args) {
    GroovyShell shell = new GroovyShell();
    Script script = shell.parse("def myStuff(a){ return a }");

    System.out.println(script.invokeMethod("myStuff", 5));
}

输出:

5
GroovyShell shell = new GroovyShell();
Script script = shell.parse("def myStuff(a){ return a }");

println script.getClass().getDeclaredMethods().find{it.name=='myStuff'}

输出:

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