2016-08-09 5 views
0

私は、オープンソースのApache Tomcatコードを通過し、開始時に、Bootstrap.javaに私が見つけたこの: Apache TomcatのBootstrapクラスがnew演算子の代わりにClassLoader.loadclassを呼び出すのはなぜですか?

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

Bootstrap.javaと、このCatalina.javaは、同じパッケージ、なぜブートストラップに属しでも

( org.apache.catalina.startup)クラスapacheのTomcatは、Catalinaクラス(org.apache.catalina.startup.Catalina)をロードし、class.newInstanceをロードするためにClassLoader.loadclassを呼び出します。なぜ新しい演算子を使用してCatalinaインスタンスを作成するのですか?

+0

クラスローディングとさまざまなクラスローダーの仕組みを理解していますか? – Kayaman

+0

私は少し知っていますが、もっと聞きたいです。 – user3690370

答えて

0

コードでは明示的にcatalinaLoaderを使用し、後でクラスのインスタンスを作成すると仮定すると、CatalinaクラスにBootstrapクラスとは異なるクラスローダーがロードされていることを確認します。

詳細については、クラスローディングに関するドキュメントを参照してください。

+0

それは私の質問は、なぜそれはTomcatは、ブートストラップクラスよりも別のクラスローダーでCatalinaクラスをロードする必要があるのですか? – user3690370

+0

これは答えがあまりにも広すぎますが、基本的に独自のクラスローダーを使用すると、ロードされているクラスやアンロードされているクラスをより詳細に制御できます。クラスの読み込みは複雑なテーマなので、詳細情報をお探しの場合は、Googleに問い合わせる必要があります。 – Kayaman

関連する問題