groovy的调用传值

发布时间 2023-07-05 19:06:49作者: 度一川

使用 GroovyClassLoader 和 Method 对象

注:因为Groovy完全兼容java代码,所以事例的groovy脚本是以java进行编写的

import groovy.lang.Binding;
import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyShell;

import java.lang.reflect.Method;

public class Main {

    static String script = "class HelloWorld {\n" +
            "    void sayHello(String name) {\n" +
            "        System.out.printf(\"你好:\"+name);\n" +
            "    }\n" +
            "}";
    public static void main(String[] args) throws Exception {
        GroovyClassLoader classLoader = new GroovyClassLoader();
        Class<?> groovyClass = classLoader.parseClass(script);

        Object instance = groovyClass.newInstance();
        Method method = groovyClass.getMethod("sayHello", String.class);

        method.invoke(instance, "Tom");
    }
}

在上面的代码中,我们首先创建了一个 GroovyClassLoader 对象,并使用它加载 Groovy 脚本文件。然后,我们使用 newInstance 方法创建 Groovy 类的实例,并使用 getMethod 方法获取 Groovy 类中的方法。最后,我们使用 invoke 方法调用 Groovy 类中的方法,并传递一个参数。