类加载器的分类
- JVM支持两种类型的类加载器,引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)。Java的核心类库都是使用引导类加载器进行加载的,例如String类就是用引导类进行加载的。
- 自定义类加载器一般指程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范是将所有派生于抽象类classLoader的类加载器都划分为自定义类加载器。
- 日常程序中我们常见的类加载器有3个:Bootsrap Class Loader、Extension Class Loader、System Class Loader。对于用户自定义类来说,默认使用系统类加载器进行加载。
为什么要使用自定义类加载器:
- 隔离加载类
- 修改类加载的方式
- 扩展加载源
- 防止源码泄露
用户自定义类加载器实现步骤:
(1) 开发人员可以通过继承抽象类java.lang.ClassLoader类的方式,实现自己的类加载器。
(2) 在JDK1.2前,自定义类加载器时总会去继承ClassLoader类并重写LoadClass()方法,从而实现自定义类加载器。但是JDK1.2之后不建议用户覆盖loadclass()方法,而建议把自定义的类加载逻辑写在findclass()方法中。
(3) 在编写自定义类加载器时,如果没有过于复杂的需求,可以直接继承URLClassLoader类,这样可以避免自己去编写findClass()方法以及获取字节码流的方式使得自定义类加载器编写更简洁。
欢迎批评指正,提出问题,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?