如何理解父类加载器加载的类不能访问子类加载器加载的类?

在学习线程上下文类加载器的时候,经常看到网上的博文说父类加载器加载的类不能访问子类加载器加载的类,因此需要线程上下文类加载器。想请问该怎么理解这句话呢?

阅读 5.4k
2 个回答

自己写的类加载器,重写loadClass就行了

自我感觉,这么说有点绝对,只能说父类加载器想要使用 还未加载的 非JAVA_HOME/lib下的 类 是无法使用的。如果在项目加载过程中代码比如使用class.forname(.)加载了该类,那么父类是可以直接使用的。

当使用Bootstrap加载器加载一个对象并使用时,该对象内部要使用在classpath下(需要Application加载器加载)还未加载的一个类对象,但是根据双亲加载机制boostrap尝试加载该类因为其自身为最高层加载器所以只能有boostrap加载器加载,所以是无法加载不到该类的,也就无法使用该类,可以说父类是没有办法使用子类加载器加载的对象的。

这时候就需要contextClassloader了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题