黑马程序员技术交流社区

标题: 类加载的加载机制 [打印本页]

作者: star5603    时间: 2014-8-7 10:56
标题: 类加载的加载机制
本帖最后由 star5603 于 2014-8-7 13:21 编辑

类加载器加载当前类时,引用到了另一个类,那这个类也是由当前类加载器加载,但如果当前类是由自己自定义的类加载器或者是app加载器加载的,当前类引用到了System,那是当前类加载器去加载,还是会调用bootStrap去加载?


作者: Bule丶    时间: 2014-8-7 12:49
应该是会调用bootStrap去加载,毕竟委托机制是这样的,而且还安全
作者: fantacyleo    时间: 2014-8-7 12:54
如果你自定义类加载器时只重写了findClass方法,那么就是BootStrap,因为类加载委托机制的逻辑并不是在findClass中实现的,而是在loadClass中。当然你可以重写loadClass方法来破坏默认的委托加载机制,loadClass的访问修饰符是protected,允许子类继承、重写
作者: star5603    时间: 2014-8-7 13:08
fantacyleo 发表于 2014-8-7 12:54
如果你自定义类加载器时只重写了findClass方法,那么就是BootStrap,因为类加载委托机制的逻辑并不是在find ...

那就是说,当前线程执行到了下一个类时,即使加载了前一个类,在执行下一个类时,还是会继续委托机制。
作者: fantacyleo    时间: 2014-8-7 13:14
star5603 发表于 2014-8-7 13:08
那就是说,当前线程执行到了下一个类时,即使加载了前一个类,在执行下一个类时,还是会继续委托机制。 ...

那是肯定的,每加载一个类就是调一次loadClass方法,走一遍委托机制
作者: star5603    时间: 2014-8-7 13:21
fantacyleo 发表于 2014-8-7 13:14
那是肯定的,每加载一个类就是调一次loadClass方法,走一遍委托机制

ok,谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2