栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用自定义类加载器打破双亲委派机制实现自定义String类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用自定义类加载器打破双亲委派机制实现自定义String类

今天我和大家如何用自定义加载器打破双亲委派机制。

在介绍双亲委派机制前,我先来聊聊Java里面有几种类加载器。

  • 引导类加载器:Bootstrap classloader

  • 扩展类加载器:ExtClassLoader

  • 应用程序类加载器:AppClassLoader

  • 自定义加载器:MyClassLoader(这个名字自定义的)

接下来我们来介绍下什么是双亲委派机制,如下图所示:

在这里类加载其实就是个双亲委派机制,比如加载某个类时会先委托父加载器寻找目标类,找不到再委托上层父加载器加载,当所有父加载器在自己的加载路径下都找不到目标类的话就会在自己的类加载路径中查找并且载入目标类。

 双亲委派机制的本质就是,加载类时先从父加载器中加载,父加载器没有,再由子加载器中加载。

为什么要设计双亲委派机制?

  • 沙箱安全机制:如果有人想替换系统级别的类:String.java是不会被加载的,这样便可以防止核心API库被随意篡改。

  • 避免类的重复加载:当父加载器已经加载了该类时,就没有必要子加载器再加载一次,保证被加载类的唯一性。

下面我们来通过自定义加载器来打破这种双亲委派机制,并且我们自定义一个String类,让它加载到JVM中运行起来。

 自定义类加载器

 自定义String类

 在目标文文件夹里使用javac 指令将String.java 生成String.class字节码文件。

 字节码文件已生成

 运行自定义类加载器

 运行结果

就这样我们使用自定义的类加载器实现了自定String类的运行。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424220.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号