【Java基础之一】Java Classloader机制解析

本文详细阐述了Java类加载器的加载顺序与反射技术的应用,特别强调了如何通过自定义类加载器实现对Java内置类的替换。深入分析了双亲委托机制的灵活性与限制,以及针对特定类(如java.*开头的类)无法通过自定义类加载器进行替换的原因。同时,文章提供了关于类加载顺序的更详细解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章1 举例说明了Classloader的加载顺序以及反射的应用等。

文章2 说明:

loadClass方法:

没有被标记为final,也就意味着我们是可以override这个方法的,也就是说双亲委托机制是可以打破的。

findClass方法:

在写自己的ClassLoader的时候,如果想遵循双亲委托机制,则只需要override findClass


假如我们自己写了一个String的类,我们是否可以替换调JDK本身的类?

答案是否定的。我们不能实现。为什么呢?我看很多网上解释是说双亲委托机制解决这个问题,其实不是非常的准确。因为双亲委托机制是可以打破的,你完全可以自己写一个classLoader来加载自己写的String类,但是你会发现也不会加载成功,具体就是因为针对java.*开头的类,jvm的实现中已经保证了必须由bootstrp来加载。

文章3  更加详细的分析了类加载的顺序。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值