Java类加载器常用方法包括:1. loadClass加载类并初始化;2. findClass供自定义加载器重写;3. defineClass将字节码转为Class对象;4. getResource查找单个资源;5. getResources查找多个同名资源;6. getSystemClassLoader获取系统类加载器;7. getParent获取父加载器;8. setDefaultAssertionStatus设置断言状态。掌握这些方法有助于实现热部署、插件化等高级功能,重点是findClass与defineClass的配合使用。

Java类加载器(ClassLoader)是JVM用来动态加载类的核心组件。它负责将.class文件加载到内存中,并转换为java.lang.Class对象。以下是ClassLoader中一些常用的方法及其用途。
1. loadClass(String name)
该方法用于加载指定全限定名的类。如果类尚未被加载,会触发类的加载、链接和初始化过程。
说明:
- 参数 name:类的全限定名,如 "java.lang.String"
- 返回值:返回对应的 Class 对象
- 默认实现会委托父类加载器先尝试加载(遵循双亲委派模型)
Class> clazz = classLoader.loadClass("com.example.MyClass");
立即学习“Java免费学习笔记(深入)”;
2. findClass(String name)
该方法由自定义类加载器重写,用于查找并定义一个类。在loadClass内部,当父加载器无法加载时会被调用。
说明:
- 需要手动读取字节码并调用 defineClass() 来生成 Class 对象
- 开发自定义类加载器时重点实现此方法
protected Class> findClass(String name) throws ClassNotFoundException {
byte[] data = loadClassData(name);
return defineClass(name, data, 0, data.length);
}
3. defineClass(String name, byte[] b, int off, int len)
将字节数组转换为一个 Class 对象,但不会立即解析。
说明:
- name 可为 null,若为 null 则从字节码中获取类名
- 该方法受保护,只能在子类中调用
- 不触发类的初始化,仅完成类的定义阶段
4. getResource(String name)
查找具有给定名称的资源,返回一个URL对象。
说明:
- 资源可以是配置文件、图片、.class文件等
- 从类路径下查找,支持相对路径或 / 开头的绝对路径
URL url = classLoader.getResource("config.properties");
2013年07月06日 V1.60 升级包更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。1.[新增]后台引导页加入非IE浏览器提示,后台部分功能在非IE浏览器下可能没法使用2.[改进]淘客商品管理 首页 列表页 内容页 的下拉项加入颜色来区别不同项3.[改进]后台新增/修改淘客商品,增加淘宝字样的图标和天猫字样图标改成天猫logo图标4.[改进]为统一名称,“分类”改
5. getResources(String name)
返回具有给定名称的所有资源的URL枚举,用于处理多个同名资源(如不同JAR中的同名配置文件)。
示例:Enumeration
6. getSystemClassLoader()
静态方法,返回系统类加载器(也称应用类加载器),它是默认的类加载器。
说明:
- 用于加载应用程序 classpath 下的类
- 可作为自定义类加载器的父加载器
ClassLoader systemLoader = ClassLoader.getSystemClassLoader();
7. getParent()
获取当前类加载器的父加载器。
说明:
- 引导类加载器(Bootstrap)为 null
- 用于理解类加载的委托链结构
ClassLoader parent = classLoader.getParent();
8. setDefaultAssertionStatus(boolean enabled)
设置该类加载器所加载类的默认断言状态。
说明:
- 启用或禁用断言(assert 关键字)
- 对后续加载的类生效
基本上就这些常见方法。掌握它们有助于理解类加载机制,尤其在实现热部署、插件化、模块隔离等高级功能时非常关键。自定义类加载器时重点关注 findClass 和 defineClass 的配合使用。不复杂但容易忽略细节。










