我正在通过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实例?
答案 0 :(得分:0)
由于代码明确使用catalinaLoader
并假设它稍后创建了类的实例,因此要确保Catalina
类加载的是与{{Bootstrap
类不同的类加载器。 1}} class。
有关这意味着什么的更多信息,请参阅有关类加载的文档。