如何使用Java UrlClassLoader重新加载类

时间:2014-06-22 12:31:24

标签: java reflection urlclassloader

我有一个类列表,我需要在程序执行期间多次使用,我需要加载它们,因为它们的代码可以经常更改,我想将它们视为服务,以便我可以更新它们容易。在这里我的问题:

即使没有更改,UrlClassLoader是否会再次加载该类? 这会导致性能或内存问题吗?

以下是我测试此代码的代码:

package classloader;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

public class ClassLoaderClass {
    public static void main(String[] args) throws ClassNotFoundException, MalformedURLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, InterruptedException {

            //no paramater
            Class noparams[] = {};

        URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{new URL("file:///C:/Users/hm/Documents/classes/")});
        Class gsonClass = urlClassLoader.loadClass("AppTest");
        Constructor constructor = gsonClass.getConstructor();
        Object Apptest = constructor.newInstance();
        Method method = gsonClass.getMethod("printIt",noparams);
        Object returnObj =  method.invoke(Apptest, null);
        String jsonString = (String)returnObj;
}

}

我希望你能帮助我,谢谢。

1 个答案:

答案 0 :(得分:0)

URLClassLoader检查某个类是否已加载且未再次加载。有关详细信息,请参阅ClassLoader.loadClass()