>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 29728 个阅读者 刷新本主题
 * 贴子主题:  [求助]《Java面向对象编程第二版》有个问题(关于类的加载) 回复文章 点赞(0)  收藏  
作者:apolo    发表时间:2019-06-24 15:04:35     消息  查看  搜索  好友  邮件  复制  引用

P318页创建用户自定义的类加载器这一小节中,书中给出了一个MyClasssLoader例子,其中,定义的test方法为:
public static void test(ClassLoader loader)throws Exception{
     Class objClass = loader.loadClass("Sample");
     Object obj = objClass.newInstance();
}
这里是直接调用ClassLoader的loadClass方法,但是并没有调用loadClassData方法,而且loadClassData也不是覆盖的方法,在MyClassLoader的main方法中也没有调用loadClassData方法,那么又是如何将类的二进制数据读入内存中,从而能够创建以一个Sample实例呢?
我在ClassLoader的loadClass方法中也没有找到loadClassData方法的调用
这是为啥呢


程序猿的技术大观园:www.javathinker.net

[这个贴子最后由 sunweiqin 在 2019-06-25 16:41:17 重新编辑]
  Java面向对象编程-->Java语言中的修饰符
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->JPA API的高级用法
  Java网络编程-->基于MVC和RMI的分布式应用
  精通Spring-->
  Vue3开发-->Vue指令
  [原创]汽車美容
  BIO、NIO和AIO的区别、三种IO的原理与用法
  Java设计模式:接口隔离原则和迪米特法则详解
  用注解去代替if-else的技巧
  关于新书
  使用 RocketMQ 事务消息,实现分布事务
  使用javaNIO实现C/S模式的通信
  Eclipse使用指南:快速修复功能
  Java虚拟机(JVM)的内存结构
  Java入门实用代码:死锁及解决方法
  Java入门实用代码:链表元素查找
  Java入门实用代码:100以内整数求和运算
  Java入门实用代码:字符串小写转大写
  JAVA日期加减运算
  java实现PPT转化为PDF
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 sunweiqin 
  

威望: 0
级别: 高级天王 [荣誉]
魅力: 480
经验: 480
现金: 1128
发文章数: 171
注册时间: 2016-09-12
 消息  查看  搜索  好友  邮件  复制  引用


您好。这是因为MyClassLoader类继承了ClassLoader类,因此就继承了loadClass()方法。

在ClassLoader类的loadClass()方法的实现中,会调用findClass()方法。

MyClassLoader类重新实现了findClass()方法,在findClass()方法中会调用loadClassData()方法。

所以,当调用MyClassLoader类的loadClass()方法时,实际的方法调用过程为:

loadClass()->findClass()->loadClassData()
发文章时间 2019-06-25 16:40:38
 IPIP: 已设置保密 1 楼     
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。