Class.forName使用的类加载器是什么?

pywepe 2011-06-01 06:57:03
api上说
Returns the Class object associated with the class or interface with the given string name. Invoking this method is equivalent to:
Class.forName(className, true, currentLoader)

where currentLoader denotes the defining class loader of the current class.

这个currentLoader是哪个loader?

是Thread.currentThread().gettContextClassLoader() 吗?

如果不是那currentLoader是哪个?
...全文
420 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
诚朴勇毅 2011-06-10
  • 打赏
  • 举报
回复
在一个实例方法中,表达式:

Class.forName("Foo")
等效于:
Class.forName("Foo", true, this.getClass().getClassLoader())
这个currentLoader自然是this.getClass().getClassLoader()。
zhangyy130 2011-06-10
  • 打赏
  • 举报
回复
学习了
前方 2011-06-10
  • 打赏
  • 举报
回复
学习了
healer_kx 2011-06-02
  • 打赏
  • 举报
回复
不一定,。。。
aotian16 2011-06-02
  • 打赏
  • 举报
回复
我来学习的
若鱼1919 2011-06-02
  • 打赏
  • 举报
回复

package simple;
class AAA{}
public class ClassLoaderTest {
public static void main(String[] args)throws Exception {
ClassLoader loader1 = ClassLoaderTest.class.getClassLoader();
ClassLoader loader2 = Class.forName("simple.AAA").getClassLoader();
ClassLoader loader3 =Thread.currentThread().getContextClassLoader();
System.out.println(loader1 == loader2);//true
System.out.println(loader1 == loader3);//true
}
}
诚朴勇毅 2011-06-02
  • 打赏
  • 举报
回复
你这个代码在哪个类中,用这个类的loader就可以了
三心不可得 2011-06-02
  • 打赏
  • 举报
回复
这个currentLoader是哪个loader?
是Thread.currentThread().gettContextClassLoader()。

不同地方的字节码有不同的ClassLoader加载。
pywepe 2011-06-01
  • 打赏
  • 举报
回复
public class Test {

/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {

ClassLoader ld = Test.class.getClassLoader();
System.out.println(ld.getClass());
// class sun.misc.Launcher$AppClassLoader

Class<?> c = Class.forName("a.Test");
System.out.println(c.getClassLoader().getClass());
// class sun.misc.Launcher$AppClassLoader

c = Class.forName("a.Test",true,Thread.currentThread().getContextClassLoader());
System.out.println(c.getClassLoader().getClass());
// class sun.misc.Launcher$AppClassLoader
// 说明在没有setContextClassLoader情况下,contextClassLoader是AppClassLoader

}

}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧