类加载器

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方法

posted @ 2017-03-26 22:20  一心行走  阅读(126)  评论(0)    收藏  举报