Java 5.0 ClassLoader

来源:互联网 发布:cloudflare nginx 编辑:程序博客网 时间:2024/04/25 15:34

类加载器:负责加载类的二进制代码。Java常用的加载器系统的默认的有三个主要的,每个类负责加载指定位置的类BootStrap,ExtClassLoad,AppClassLoad.其中,他们三个加载器,父类子类的关系。

其中BootStrap他不是一个类,那是在虚拟机内核中的,他是所有类的加载器。ExtClassLoad加载jre中的libext的所有jar

类加载器的委托机制:不管申请类加载的时候那个类加载器加载,他都会第一时间向上以及加载器上报,直到BootStrsp。然后BootStrsp开始查找,如果没有他就会让下一级别的加载器查找。知道申请的加载器。如果都没有找到,就会报出异常。如果,有任何的一个加载器找到了,并成功加载。那么都没有就不用再次加载了。这样的做法,就是为了始终保持一个类只被加载一次。也就说,如果我们自己写了一个类,并调用加载器加载它。但是这个类在其父类的加载器就被加载了。那么我们的这个类就不被我们的调用的类加载器再次加载了。

涉及的设计模式:模版设计模式,就是其子类都有一个不一样的执行方法。但是流程上是一样的。都是要现交给其父类去执行,如果父类执行不了,再由子类的方法执行。

自定义类加载器:

另一个类


通过MyClassLoad类的main方法,可以执行出加密后的class文件,这个要去加密的源文件的地方删除源文件,如果不删除,我自定义的类加载器,是无法加载再次加载我们的加密后的class文件的。因为,我们定义的类加载器的父类已经加载过了。

原创粉丝点击