3 回答
互换的青春
TA贡献1797条经验 获得超6个赞
简单来说是这样的:
1、ClassLoad可以有很多,而且它们之间存在层级关系,最顶层的叫做BootClassLoad。
2、每层ClassLoad都用自己的工作范围。
3、每个ClassLoad中都有一个上级ClassLoad的引用。
4、当某一个ClassLoad开始工作时(加载Class),他会首先调用上级ClassLoad来Load Class,层层向上,直到顶层。
5、只有当上级ClassLoader没能在职责范围内Load到指定Class时,下级ClassLoader才会在自己的职责范围内来Load。
更多内容,搜索引擎检索关键字“双亲委派模型”即可。
眼眸繁星
TA贡献1873条经验 获得超9个赞
这里的初始化可以理解为,类加载的最后一步(调用<clinit>
),如果是两个不同的ClassLoad加载的话那么<clinit>
会被执行两次,加载的Class
对象在方法区(永久代),并且会对应两个Class
对象.
如果是重载findClass
方法代码运行出来的结果最后应该是两个true
.上述代码,因为class
文件最终是在classpath
下,所以都是交给AppLoader去加载,如果需要呈现效果,需要把class
文件挪一个位置,挪到不在classpath
.楼主是重载loadClass
方法
添加回答
举报
0/150
提交
取消