根类加载器的一个特性

java 代码
  1.   
  2. public class Test {   
  3.   
  4.         public static void main(String[] args) {   
  5.            
  6.         Class c;   
  7.         ClassLoader cl,cl1;   
  8.         cl=ClassLoader.getSystemClassLoader();   
  9.         System.out.println(cl);   
  10.         while(cl!=null){   
  11.             cl1=cl;   
  12.             cl=cl.getParent();   
  13.             System.out.println(cl1+"'s parent is  "+cl);               
  14.         }   
  15.            
  16.            
  17.         try{   
  18.                
  19.             c=Class.forName("java.lang.Object");   
  20.             cl=c.getClassLoader();   
  21.             System.out.println("java.lang.Object's loader is "+cl);   
  22.                
  23.             c=Class.forName("Test");   
  24.             cl=c.getClassLoader();   
  25.             System.out.println("Test's loader is "+cl);   
  26.                
  27.                
  28.         }catch(Exception e){   
  29.                
  30.                
  31.         }   
  32.            
  33.            
  34.   
  35.     }   
  36.   
  37. }   

运行结果:
sun.misc.Launcher$AppClassLoader@19821f
sun.misc.Launcher$AppClassLoader@19821f's parent is  sun.misc.Launcher$ExtClassLoader@addbf1
sun.misc.Launcher$ExtClassLoader@addbf1's parent is  null
java.lang.Object's loader is null
Test's loader is sun.misc.Launcher$AppClassLoader@19821f

注意红色区域的运行结果.之所以最后他们返回的父加载根加载器为NULL的原因是因为JAVA虚拟机并不会向JAVA程序提供根类加载器的引用,而是返回NULL来表示根类加载器,这样做是为了保护JAVA虚拟机的安全,防止黑客利用根加载器来加载非法的类,从而破坏JAVA虚拟机的核心代码.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值