A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pengyu1801 中级黑马   /  2014-8-13 21:32  /  850 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

可不可以自己写一个类java.lang.System

2 个回复

倒序浏览
一般情况是不可以的,因为java.lang.System的类加载器是BootStrap,是最高级的类加载器了。而自己写的java.lang.System类的类加载器是AppClassLoader。当BootStrap加载到的时候,AppClassLoader就不会加载了。即实际上加载的还是java提供的java.lang.System。而不是自定义的。但是如果不使用委托机制,而是直接由自己定义的类加载器来完成加载时可以实现加载自定义的System类的。
以上的具体原因如下:
java的类加载器使用了委托机制:就是当要加载一个类时,会首先委托给上一级的类加载器加载,如果上一级类加载器没有找到,则交给下一级类加载器,如果上一级类加载器找到了就直接加载,此时加载就结束了;如果上一级的类加载器都没有加载到则最后才交给发起的类加载器加载,如果发起的类加载器加载成功,则操作结束,如果发起的类加载器也没有加载到,则报ClassNotFoundEexception异常.
回复 使用道具 举报
晓风 发表于 2014-8-13 21:58
一般情况是不可以的,因为java.lang.System的类加载器是BootStrap,是最高级的类加载器了。而自己写的java. ...

    很全面,感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马