1. Java で動的にロードされるクラスと静的にロードされるクラスの違い
new がオブジェクトを作成する方法は静的ロードと呼ばれますが、Class.forName("XXX") を使用することは動的ロードと呼ばれます。それは、静的にロードされるクラスのソース プログラムはコンパイル時にロードされる (存在する必要がある) のに対し、動的にロードされるクラスのソース プログラムはコンパイル時に存在しなくてもよい (ソース プログラムが存在する必要はない) ということです。
2. なぜクラスを動的にロードする必要があるのですか
私自身の理解では、クラスを動的にロードするとプログラムの柔軟性が高まります。たとえば、プログラムには 50 個の関数がありますが、静的ロードを使用する場合は、コンパイル前に 100 個の関数の定義をすべて指定する必要があります。そうしないと、コンパイルが通過しません。動的読み込みメカニズムなので、それほど時間をかける必要はなく、使用するメカニズムを定義するだけで済みます。
静的読み込み:
public class Office_Static { public static void main(String[] args) { //new 创建对象,是静态加载类,在编译时刻就需要加载所有的可能使用到的类 if("Word".equals(args[0])){ Word w = new Word(); w.start(); } if("Excel".equals(args[0])){ Excel e = new Excel(); e.start(); } } }
このプログラムは、Excel が使用されない場合でも、コンパイル時に Word クラスと Excel クラスが必要です
動的読み込み:
1. インターフェイス OfficeAble。 :
public interface OfficeAble { public void start(); }
2. Word実装インターフェース:
public class Word implements OfficeAble{ public void start(){ System.out.println("word start"); } }
3. Excel実装インターフェース:
public class Excel implements OfficeAble{ public void start(){ System.out.println("excel start"); } }
4. りー
以上がJava がサンプルコードのリフレクティブ静的ロードと動的ロードを実装する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。