A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘源 中级黑马   /  2012-8-15 12:03  /  1464 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘源 于 2012-8-15 13:11 编辑

loadClass和findClass()之间是什么关系啊?
"问题已解决"
public class MyClassLoader extends ClassLoader{
protected Class<?> findClass(String name) throws ClassNotFoundException {}

然后在另一个类中调用:
Class<?> clazz  = new MyClassLoader()loadClass("ClassLoaderAttachment");
loadClass不是就是加载"ClassLoaderAttachment”这个类吗?
为什么这句话它会去调用MyClassLoader的findClass()这个方法。

2 个回复

倒序浏览
Java 2 中 ClassLoader 的变动
1)loadClass 的缺省实现
   定制编写的 loadClass 方法一般尝试几种方式来装入所请求的类,如果您编写许多类,会发现一次次地在相同的、很复杂的方法上编写变量。 在 Java 1.2 中 loadClass 的实现嵌入了大多数查找类的一般方法,并使您通过覆盖 findClass 方法来定制它,在适当的时候 findClass 会调用 loadClass。 这种方式的好处是您可能不一定要覆盖 loadClass;只要覆盖 findClass 就行了,这减少了工作量。
2)新方法:findClass
     loadClass 的缺省实现调用这个新方法。findClass 的用途包含您的 ClassLoader 的所有特殊代码,而无需要复制其它代码(例如,当专门的方法失败时,调用系统 ClassLoader)。
回复 使用道具 举报
loadClass方法会首先调用 findLoadedClass方法来检查该类是否已经被加载过
如果没有加载过,会调用父类加载器的 loadClass方法尝试加载该类;
如果父类加载器无法加载该类的话,就调用 findClass方法来查找该类。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马