在java中动态加载类时

时间:2015-05-30 13:24:10

标签: java class jvm classloader

假设在java中我正在动态加载类AA使用java标准库类和
用户定义的类。
我想知道什么是必须加载A使用的所有类的类加载器?

感谢

1 个答案:

答案 0 :(得分:0)

这取决于您设计加载类A

的类加载器的方式

首先,类加载器之间将存在层次关系。

标准Java机制(父级优先):

通常在必须加载类时,默认情况下,它遵循以下模式:

  1. 检查父类加载器是否可以加载类(每个类加载器将委托给其父类)
  2. 如果父级无法加载该类,则子类加载器会尝试加载它。
  3. 如果孩子也无法加载它,则会引发ClassNotFoundException。
  4. 特殊情况(儿童优先):

    在这种情况下,子类加载器(即您的类加载器可以尝试加载类),如果此类加载器无法加载所需的类,则它可以要求父类加载该类。如果父级无法加载该类,则会引发ClassNotFoundException


    在任何情况下,java核心类都应该由父类加载器加载 但理论上,只要您有权访问包含这些类的jar,您就可以始终使自定义类加载器加载这些类