Java:如何破坏类加载器的双亲委派机制?

news/2024/11/13 3:42:28/

本文重点

我们前面分析过loadClass方法,我们可以发现,这个方法的逻辑就是双亲委派机制,也就是说只要不破坏这个方法,那么就不会破坏双亲委派机制。如果要想破坏双亲委派机制,我们需要在类中重写loadClass方法,只要这样,那么就不会走双亲委派机制了。

破坏还是不破坏双亲委派机制

所以如果我们想要自定义一个类加载器(继承ClassLoader),如果我们不想要破坏双亲委派机制,那么我们只需要自己定义好findClass方法,该方法主体就是完成给定class文件路径,将其转变为Class对象的任务。这样我们可以new 自定义类加载器().loadClass(class文件路径)就可以了,虽然我们自定义的没有loadClass方法,然后它会默认使用父类ClassLoader的,所以此时并没有破坏双亲委派机制。

如果我们想要破坏双亲委派机制,我们可以重写loadClass,不再调用父类的loadClass方法,自己定义类加载的方式。这种情况很危险,因为有可能我们要加载的类还调用别的类,但是此时还会用自定义的类加载器加载,那么此时就会出现问题。

不破坏双亲委派机制

这个的执行结果为true,没有破坏双亲委派机制,因为我们只重写了findClass方法,即使中间新new了一个类加载器,也能保证同一个类被同一个类加载器加载。

破坏双亲委派机制


http://www.ppmy.cn/news/1007819.html

相关文章

无涯教程-Lua - nested语句函数

Lua编程语言允许在另一个循环中使用一个循环。以下部分显示了一些示例来说明这一概念。 nested loops - 语法 Lua中嵌套for循环语句的语法如下- for init,max/min value, increment dofor init,max/min value, incrementdostatement(s)endstatement(s) end Lua编程语言中的…

【Markdown入门及使用】

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

web基础与tomcat环境部署

一. 简述静态网页和动态网页的区别。 请求响应信息,发给客户端进行处理,由浏览器进行解析,显示的页面称为静态页面。处理文件类型如.html、jpg、.gif、.mp4、.swf、.avi、.wmv、.flv等 请求响应信息,发给事务端进行处理&#xff0…

篇四:建造者模式:逐步构造复杂对象

篇四:“建造者模式:逐步构造复杂对象” 设计模式是软件开发中的重要组成部分,建造者模式是创建型设计模式中的一种。建造者模式旨在逐步构造复杂对象,将对象的构造与其表示分离,从而使得同样的构建过程可以创建不同的…

如何将本地的conda算法库打包到无网络的服务器用于部署

如何将本地的conda算法库打包到无网络的服务器用于部署 1、先安装conda-pack库,2、将本地的虚拟环境进行打包3、登录远程服务器,切换到conda安装目录,将本地生成的tar文件复制到该目录下4、新建文件夹,例如yus_env,这个…

CentOS7---部署Tomcat和安装Jpress

总览需求 1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8,配置服务启动脚本,部署jpress应用。1、简述静态网页和动态网页的区别 静态网页: 请求响应信息,发给客户端进行处理&#xff0c…

LeetCode 每日一题 2023/7/31-2023/8/6

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 7/31 143. 重排链表8/1 2681. 英雄的力量8/2 822. 翻转卡片游戏8/3 722. 删除注释8/4 980. 不同路径 III8/58/6 7/31 143. 重排链表 快慢指针找到链表中间位置 反转后半截链…

vue 08 vue-cli和render函数

01.render函数是vue中的一个特殊的函数(有一个默认的函数做参数,是createElement),用来创造html标签和标签中的内容。好处是可以动态的创建html标签 例如: 其中返回的createElement()函数有三…