黑马程序员技术交流社区
标题:
关于类加载器测试代码的异常输出的疑问
[打印本页]
作者:
黑马王冬冬
时间:
2012-7-24 03:47
标题:
关于类加载器测试代码的异常输出的疑问
package com.itheima;
public class ClassLoaderTest {
public static void main(String[] args){
System.out.println(
ClassLoaderTest.class.getClassLoader().getClass().getName() //第一和第二个输出
+"\n"+System.class.getClassLoader());
ClassLoader loader = ClassLoaderTest.class.getClassLoader();
while(loader != null) {
System.out.println(loader.getClass().getName());//第三第四个输出
loader = loader.getParent();
}
System.out.println(loader);
}
}
复制代码
以上是学习张孝祥老师java基础加强视频课程时,就类加载器部分写的测试代码。我的疑问是程序本应该输出四个值,但我却得到了五个,如下:
sun.misc.Launcher$AppClassLoader
null
sun.misc.Launcher$AppClassLoader
sun.misc.Launcher$ExtClassLoader
null
请问问题何在?搞不清楚……
作者:
张莹莹
时间:
2012-7-24 08:03
按照程序一步步执行,执行到ClassLoader loader = ClassLoaderTest.class.getClassLoader();时,前面正常输出,
此时loader不为空,执行 System.out.println(loader.getClass().getName());
当执行loader = loader.getParent();
loader变为null,所以最后输出null,图中标示出来了
输出.png
(18.73 KB, 下载次数: 43)
下载附件
2012-7-24 08:01 上传
输出
作者:
李菁
时间:
2012-7-24 10:49
03.public class ClassLoaderTest {
04. public static void main(String[] args){
05. System.out.println(
06. ClassLoaderTest.class.getClassLoader().getClass().getName() //第一和第二个输出
07. +"\n"+System.class.getClassLoader());
08.
09. ClassLoader loader = ClassLoaderTest.class.getClassLoader();
10. while(loader != null) {
11. System.out.println(loader.getClass().getName());//第三第四个输出
12. loader = loader.getParent();
执行到这句话时,loader就为null了,所以你的结果多了一个null
13. }
14. System.out.println(loader);
15. }
16.
17.
18.}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2