使用 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 类中的方法,并传递一个参数。