【问题标题】:When dynamically loading a class in java在java中动态加载类时
【发布时间】:2015-05-30 13:24:09
【问题描述】:

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

谢谢

【问题讨论】:

    标签: java class jvm classloader


    【解决方案1】:

    这取决于你设计加载类A的类加载器的方式

    首先,类加载器之间会有层次关系。

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

    通常当你必须加载一个类时,默认情况下,它遵循这种模式:

    1. 检查父类加载器是否可以加载类(每个类加载器都会委托给它的父类)
    2. 如果父类无法加载类,则子类加载器会尝试加载它。
    3. 如果孩子也无法加载它,则会引发 ClassNotFoundException。

    特殊情况(儿童优先):

    在这种情况下,子类加载器(也就是你的类加载器可以尝试加载该类),如果这个类加载器无法加载所需的类,那么它可以请求父类加载该类。如果父级无法加载该类,则会引发 ClassNotFoundException


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

    【讨论】:

      猜你喜欢
      • 2016-03-12
      • 2011-04-04
      • 2012-10-10
      • 1970-01-01
      • 2014-11-16
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      相关资源
      最近更新 更多