19

静的クラスローディングと動的クラスローディングの違いを知っています。一般的に、私たちは常に静的クラスローディングのみを使用します。どのような状況で動的クラスローディングを使用するか、誰か教えていただけますか??

4

8 に答える 8

12

動的クラスローディング

主要な外部依存関係がアプリケーションのソースコードにコンパイルされないように、アプリケーションを構築できます。

アプリケーション

JDBC

たとえば、JDBC の場合、ソース コードを変更することなく、異なるドライバーの実装や (理論上は) 異なるデータベース ベンダーを切り替えることができます。

プラグイン

もう 1 つの使用例は、一部のサプライヤが、顧客が独自のカスタム クラスを「プラグイン」できるようにする拡張ポイントを備えた汎用形式のアプリケーションを開発する場合です。通常、カスタム クラスは Class.forName(...) を使用してロードされます。

フレームワークとコンテナ

3 番目のユース ケースは、アプリケーション固有の Bean やサーブレットなどのクラスを動的にロードするために内部で Class.forName(...) を通常使用するアプリケーション フレームワークとコンテナです。

その他

4 番目の使用例は、アプリケーション (またはアプリケーション ライブラリの可能性が高い) に、通常のアプリケーション実行では使用されないモジュールがある場合です。Class.forName(...) を内部で使用することにより、アプリケーションまたはライブラリは、大量の不要なクラスをロードおよび初期化することによる CPU およびメモリのオーバーヘッドを回避できます。(Sun Swing ライブラリは、アプリケーションの起動時間を短縮するためにこれを行っているようです。他にも例があると思います。)

動的クラスローディングを参照

于 2013-10-22T14:03:22.403 に答える
2

一般的に言えば、コンパイル時に必ずしも利用可能ではないクラスをプログラムが使用するときはいつでも。例として、元のアプリケーションを再コンパイルせずに新しいプラグインを作成できるプラグイン システムがあります。

于 2013-10-22T13:52:22.007 に答える
1

Java で最も一般的なケースは、プラグインと、JDBC ドライバーのようなライブラリーのようなプラグインです。

于 2013-10-22T13:52:23.390 に答える