【参考资料】
分析AppClassLoader,ExtClassLoader和URLClassLoader的关系http://blog.youkuaiyun.com/irelandken/article/details/7046689
在自定义类加载器中,我们自定义了一个CustomClassLoader用于从D:\temp目录下读取.class文件
但是实际上JDK已经给我们提供了URLClassLoader用于从URL路径中读取,可以直接拿来使用。
之前在讲内置类加载器中讲过:
其实可以简单的理解为,这些类加载器的处理逻辑都是相同的,读取.class字节码文件生成Class类,只不过是从不同的路径读取。
其实也是因为,AppClassLoader、ExtClassLoader其实就是从URLClassLoader继承的。(上图中子类看不到这两个类,是因为这两个类并未在JDK中提供)
但是需要注意,虽然继承关系是AppClassLoader继承自URLClassLoader,但是父类委托关系依然是URLClassLoader位于最底端。(应该是AppClassLoader重新设置了parent)
Java Code
package com.bjsxt.test; |