当前位置:首页 > IT技术 > 其他 > 正文

用户自定义类加载器及具体实现
2022-05-11 11:00:11


用户自定义类加载器

在Java的日常应用程序开发中,类的加载几乎是由上节3种类加载器(引导、扩展和系统类加载器)相互配合执行的,在必要时,我们还可以自定义类加载器,来定制类的加载方式。

为什么要自定义类加载器

  • 隔离加载类
  • 修改类加载的方式
  • 扩展加载源
  • 防止源码泄漏

用户自定义类加载器实现步骤

用户自定义类加载器及具体实现_加载

关于ClassLoader

ClassLoader类,它是一个抽象类,其后所有的类加载器都继承自ClassLoader(不包括启动类加载器)

用户自定义类加载器及具体实现_java_02

获取ClassLoader的几种方

用户自定义类加载器及具体实现_加载_03

双亲委派机制

Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。

案例分析:

我们自己创建一个 java.lang.String,当我们使用String这个类的时候,是加载我们自己写的String类还是系统给我们提供的String类呢???显然是系统提供的String。

package chapter01.com.wust.yq;

public class StringTest {

public static void main(String[] args) {
java.lang.String s = new java.lang.String();
System.out.println("hello");
}

}

用户自定义类加载器及具体实现_类加载器_04

用户自定义类加载器及具体实现_加载_05

工作原理

用户自定义类加载器及具体实现_类加载器_06

优势

用户自定义类加载器及具体实现_java_07


本文摘自 :https://blog.51cto.com/u

开通会员,享受整站包年服务立即开通 >