开发者社区> 问答> 正文

类加载器加载Class大致要经过哪写步骤?

类加载器加载Class大致要经过哪写步骤?

展开
收起
小天使爱美 2020-04-12 19:34:48 1089 0
1 条回答
写回答
取消 提交回答
  • "类加载器加载Class大致要经过如下8个步骤。 (1)检测此Class是否载入过(即在缓存区中是否有此Class),如果有则直接进入第8步,否则接着执行第2步。 注意:JVM的根类加载器并不是Java实现的,而且由于程序通常无须访问根类加载器,因此访问扩展类加载器的父类加载器时返回null。 (2)如果父类加载器不存在(如果没有父类加载器,则要么parent一定是根类加载器,要么本身就是根类加载器),则跳到第4步执行;如果父类加载器存在,则接着执行第3步。 (3)请求使用父类加载器去载入目标类,如果成功载入则跳到第8步,否则接着执行第5步。 (4)请求使用根类加载器来载入目标类,如果成功载入则跳到第8步,否则跳到第7步。 (5)当前类加载器尝试寻找Class文件(从与此ClassLoader相关的类路径中寻找),如果找到则执行第6步,如果找不到则跳到第7步。 (6)从文件中载入Class,成功载入后跳到第8步。 (7)抛出ClassNotFoundException异常。 (8)返回对应的java.lang.Class对象。 其中,第5、6步允许重写ClassLoader的findClass()方法来实现自己的载入策略,甚至重写loadClass()方法来实现自己的载入过程。"

    2020-04-12 19:35:20
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载