为什么Bootstrap类的Apache tomcat调用ClassLoader.loadclass而不是new运算符?

时间:2016-08-09 06:58:35

标签: java apache object tomcat classloader

我正在通过apache tomcat开源代码,并在开始时,在Bootstrap.java中我找到了这个:

Class<?> startupClass = catalinaLoader.loadClass("org.apache.catalina.startup.Catalina");

即使Bootstrap.java和这个Catalina.java属于同一个包,为什么Bootstrap(org.apache.catalina.startup)类的apache tomcat调用ClassLoader.loadclass来加载Catalina类(org.apache.catalina.startup) .Catalina)然后是class.newInstance,为什么不用新的运算符创建Catalina实例?

1 个答案:

答案 0 :(得分:0)

由于代码明确使用catalinaLoader并假设它稍后创建了类的实例,因此要确保Catalina类加载的是与{{Bootstrap类不同的类加载器。 1}} class。

有关这意味着什么的更多信息,请参阅有关类加载的文档。