类加载器的有关问题,多谢
类加载器的问题求助,急,谢谢!
请看以下代码:
输出结果如下:
我的问题是:
我在main方法的当前线程已经设置了类加载器为ExtClassLoader,那么创建Test对象的时候,为什么还是AppClassLoader加载了呢?
书上说如果设定了当前线程的加载器,那么当前线程在加载类的时候,都会采用设定好的加载器啊。
所以创建Test对象的时候应该打印ExtClassLoader才对啊,为什么还会是AppClassLoader呢?
谢谢大家!
------解决方案--------------------
问楼主个问题,
sun.misc.Launcher$ExtClassLoader@addbf1中的@后面的几个字符是什么。
第二,一般情况下,设定类加载器有什么用处?
请看以下代码:
public class Test {
public static void main(String[] args) {
ClassLoader systemLoader = ClassLoader.getSystemClassLoader();
Thread.currentThread().setContextClassLoader(systemLoader.getParent());
System.out.println(Thread.currentThread().getContextClassLoader());
Test t = new Test();
System.out.println(t.getClass().getClassLoader());
}
}
输出结果如下:
sun.misc.Launcher$ExtClassLoader@addbf1
sun.misc.Launcher$AppClassLoader@19821f
我的问题是:
我在main方法的当前线程已经设置了类加载器为ExtClassLoader,那么创建Test对象的时候,为什么还是AppClassLoader加载了呢?
书上说如果设定了当前线程的加载器,那么当前线程在加载类的时候,都会采用设定好的加载器啊。
所以创建Test对象的时候应该打印ExtClassLoader才对啊,为什么还会是AppClassLoader呢?
谢谢大家!
------解决方案--------------------
问楼主个问题,
sun.misc.Launcher$ExtClassLoader@addbf1中的@后面的几个字符是什么。
第二,一般情况下,设定类加载器有什么用处?