类加载器及双亲委派机制

本文介绍了Java类加载器模型,以Car类为例展示了不同实例的类模板来源于同一处。同时,讲解了双亲委派机制,详细阐述了类加载的顺序,如何保证安全,并通过例子解释了为何修改核心库会导致运行错误。该机制确保了标准库的完整性,防止了对Java内置类的不当修改。
摘要由CSDN通过智能技术生成

一、类加载器模型

有一个类Car,创建了3个实例:
在这里插入图片描述

打印3个car类hashcode,地址是不同的(356573597,1735600054,
21685669);但是通过这个这3个实例,获取原始类,地址是一致的(1956725890),说明这3个类来源的是同一个模板。
在这里插入图片描述

二、双亲委派机制

先说一下类加载器类型,一共有4种:
1.虚拟机加载器
2.启动类(根)加载器
3.扩展类加载器
4.应用程序(系统类)加载器

在这里插入图片描述

建一个java.lang下同名的String方法,打印测试,提示main方法找不到
在这里插入图片描述
这个是java保证安全的机制,java运行时,按以下顺序找类加载器:
1.类加载器收到类加载请求
2.将这个类加载请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器
3.启动类加载器检查能否加载当前这个类,能加载就结束,使用当前的加载器;否则,抛出异常,通知子类加载器进行加载
4.重复步骤3
5.所有加载器都未加载成功,则抛出异常:Class Not Found

本次找到的是jre\lib\rt.jar包下面的java.lang.String.toString()方法执行,这个方法是没有main方法的,所以报错,这样就能避免程序员误操作修改了java的标准包,保证了系统的安全性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值