在我们学习 Java类加载流程的时候,一般都会提到:
加载 -> 连接 -> 初始化 三个过程。
问题来了:
- 这三个过程中每个环节主要做哪些事?
- .class vs Class.forName() vs loadClass() 这三者有什么不同?可以结合三个过程来描述
- Android 中类加载有个 verify class的过程上述哪个流程会触发?什么情况下会出现 verify class error 情况?
更多问答 >>
-
每日一问 | 被声明为private final 的内部类,能生成一个子类对象吗?逆天篡改~
2022-04-15 21:13 -
每日一问 | 可以不借助 bindService,实现跨进程 binder 通信吗?
2022-04-27 23:43 -
2022-05-06 11:37
-
每日一问 | Service onStartCommand 返回STICKY是如何做到被拉活的?
2022-07-24 11:50 -
每日一问 | 脱糖对于Android 打包期间插桩的有什么影响?
2022-03-07 21:26 -
每日一问 | 如何构造一个 hide interface 的实现类?
2022-02-08 23:51 -
每日一问 | android hidden api 不是禁用反射,以及如何突破,「元反射」不行了?
2022-02-08 23:51 -
每日一问 UndeclaredThrowableException 是什么异常?
2021-12-02 00:50
加载:将外部Class文件加载到jvm虚拟机中
连接:.class 和loadClass 不会初始化该类,Class.forname会强制初始化该类
verify class应该是在加载的时候进行的
加载:从dex中加载数据结构,创建vm中对应的类Class对象和创建Java中的Class对象
链接:加载父类/接口,检测方法/变量是否有问题初始化:初始化类变量,调用clint方法verify class应该是在加载或者链接的时候进行的。
几年前看过