快速解答(无代码示例)
使用显式
ClassLoader cls = <a ClassLoader>;方法,您可以灵活地从 不是
默认ClassLoader的ClassLoader中加载类。在你的情况下,你使用的是默认系统类加载器,所以它提供了类似的总体结果(与最终目标的差异的实例化)作为
Class.forName(Stringname)呼叫,但你 可以 参考另一个类加载器来代替。
也就是说,
Class.forName(String name, boolean initialize, ClassLoaderloader)只要知道ClassLoader是什么,就可以使用。
例如,您的基于EAR的应用程序具有自己的ClassLoader,其中包含包装在其中的XML解析库的版本。您的代码通常使用这些类,但是在一个实例中,您需要从该库的早期版本中获取一个反序列化类(Application
Server恰好保留在 其 整体ClassLoader中)。因此,您可以改为引用该Application Server ClassLoader。
不幸的是,直到获得项目Jigsaw(JDK 8)为止,此方法的使用频率比我们想要的要高:-)



