Class.forName和ClassLoader.loadClass的不同

来源:互联网 发布:java主要用途 编辑:程序博客网 时间:2024/05/02 01:20

两种:

(1)

Class的装载分了三个阶段,loading,linking和initializing。

Class.forName(className)装载的class已经被初始化,而ClassLoader.loadClass(className)装载的class还没有被link。

(2)

Class.forName是从指定的classloader中装载类,如果没有指定,也就是一个参数的时候,是从装载当前对象实例所在的classloader中装载类。而ClassLoader的实例调用loadclass方法,是指从当前ClassLoader实例中调用类,而这个实例与装载当前所在类实例的Classloader也许不是同一个。

使用多个classloader的情况非常常见,比如说我们的app server,那么都是这样的. 在Web与EJB间, 他们的classLoader就是不同的,这样做的目的就是为了避免两者间类装载的相互干扰。希望使用在自己的Class Loader来实现特定的操作,请使用ClassLoader方式。

原创粉丝点击