在 Java 中,**Class 类的加载(类加载)**是指 JVM 把 .class 文件中的二进制数据读入内存,并转换成 java.lang.Class 对象的过程。整个过程由 类加载器(ClassLoader) 完成,并遵循一定的生命周期。
下面从 整体流程、类加载阶段、类加载器、触发时机、双亲委派模型 几个方面说明。
Java 类的加载分为 三大阶段:
作用:
com.example.User)找到 .class 文件Class 对象由谁完成:
ClassLoader)Class<?> clazz = Class.forName("com.example.User");
链接又分为三步:
.class 文件static int a = 10;
// 准备阶段:a = 0
真正执行 Java 代码
<clinit>() 方法static int a = 10;
static {
System.out.println("init");
}
✅ 只有 主动使用类 才会触发初始化
Java 默认有三种类加载器:
| 类加载器 | 作用 |
|---|---|
| Bootstrap ClassLoader | 加载核心类(rt.jar) |
| Extension ClassLoader | 加载扩展类 |
| Application ClassLoader | 加载用户类 |
ClassLoader cl = User.class.getClassLoader();
子加载器先委托父加载器加载,父加载不了再自己加载
AppClassLoader
↓ 委托
ExtClassLoader
↓ 委托
BootstrapClassLoader
new 对象Class.forName)static final 常量(编译期常量)User u = new User();
Class.forName("com.example.User");
ClassLoader cl = new MyClassLoader();
Class<?> c = cl.loadClass("com.example.User");
Java 中 Class 的加载,是由 ClassLoader 将 .class 文件读入内存,经历加载 → 链接 → 初始化,最终生成 Class 对象的过程。
如果你愿意,我也可以:
你想深入哪一块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。