- 类加载器简介:
- 加载java类的加载器,.class-->内存中的字节码
- 系统默认有三种类加载器,他们是继承关系:BootStrap,ExtClassLoader,AppClassLoader
- 类加载器也是java类,也要被其他类加载器加载,那其中加载的源头必定不是java类,这就是BootStrap。
- 类加载器之间的父子关系和其管辖范围:
- BootStrap-->JRE/lib/rt.jar
- ExtClassLoader-->JRE/lib/ext/*.jar
- AppClassLoader-->CLASSPATH指定的所有jar或目录
- 自己定义的AppClassLoader子类-->自己指定的目录
- 类加载器的委托机制:
- 每个类加载器加载类时,先委托给上级加载器
- 当所有祖宗类没有加载到类,又回到发起者,也加载不到,才会抛出ClassNotFoundException
- 例:你自己写个System类是木有用的,因为委托机制的存在BootStrap会先将原本的System类加载进来
- 编写自己的类加载器:
- 理解:
- 自定义的类加载器必须继承ClassLoader
- loadClass中有关于委托机制的东西所以不要复写,findClass方法需要复写
- 理解: