黑马程序员技术交流社区
标题:
反射加载类 与 使用类加载器加载类有什么区别
[打印本页]
作者:
董凯
时间:
2013-7-14 16:38
标题:
反射加载类 与 使用类加载器加载类有什么区别
本帖最后由 杨兴庭 于 2013-7-14 18:21 编辑
方式一:反射加载
Class cl = Class.forName("classname");
方式二
使用ClassLoader
URLClassLoader loader = new URLClassLoader(urls);
Class cl = loader.loadClass("classname);
这两种方式加载类 有什么区别吗? 或者说有什么联系?
作者:
丁永志
时间:
2013-7-14 17:03
使用Class.forname(classname) 会使用当前类的类加载器 来加载指定的类
Class.forname也有一个重载的方法Class.forname(name, initialize, loader) 可以指定类加载器
实际上Class.forname就是对ClassLoader 进行的包装。
。
推荐深入java虚拟机第二版 这个书。
作者:
王中伟
时间:
2013-7-14 17:53
一个是用在j2se项目上的,一个是用在Web项目上的,但是有时这两个都能用,用哪个都可以;Class.forName是从指定的classloader中装载类,如果没有指定,也就是一个参数的时候,是从装载当前对象实例所在的classloader中装载类.
而ClassLoader的实例调用loadclass方法,是指从当前ClassLoader实例中调用类,而这个实例与装载当前所在类实例的Classloader也许不是同一个.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2