java动态加载groovy类

2019-07-27  本文已影响0人  small瓜瓜

预备工作我就不说明了,网上很多,也可以看这篇博客 Groovy入门

resource文件夹下创建一个entities文件夹,然后创建如下代码:

class HelloGroovy {

    def sayHello(){
        println "Hello World"
    }
}

下面是启动类:

import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyObject;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.net.URL;

public class Main {

    public static void main(String[] args) throws Exception{
// 创建一个Groovy类的加载器
        GroovyClassLoader loader = new GroovyClassLoader();
// 找到文件夹所在路径
        URL resource = Main.class.getResource("/entities");
        String path = resource.getPath();
// 获取该文件夹中所有的文件
        File dir = new File(path);
        File[] files = dir.listFiles();
// 将所有的文件遍历,执行他们的sayHello方法
        for (File file : files) {
            Class groovyClass = loader.parseClass(file);
            GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
            groovyObject.invokeMethod("sayHello", null);
        }
    }
}

类的动态加载可以实现程序规则动态变化

上一篇下一篇

猜你喜欢

热点阅读