BootStrap ,ExtClassLoader,AppClassLoader
第一个类加载器不是java类,正是BootStrap
public class ClassLoaderTest{ public static void main(String[] args){ ClassLoader loader =ClassLoaderTest.class.getClassLoader().getClass().getName(); loader.getParent(); } }
类加载器之间的父子关系和管辖范围图
BootStrap ------JRE/lib/rt.jar
ExtClassLoader----JRE/lib/ext/^.jar
AppClassLoader---ClassPath指定的所有jar或者目录
每个类加载器加载类时,又先委托给其上级类加载器
便于统一管理字节码文件
若一个类A依赖类B,类加载器加载类A,则类B也会由该类加载器加载
模板方法设计模式
父类->loadClass/findClass/得到class文件的转换成字节码-->defineClass()
子类1 (自己干)
子类2 (自己干)
编写字节的类加载器
1、自定义的类加载器的必须继承ClassLoader
2、loadClass方法与findClass方法
3、defineClass方法