2011-08-02 18 views
0

なぜ動的クラスの読み込みを使用する必要がありますか?クラスは最初に使用するときにロードされるので、クラスを使用しないとロードされません。 動的クラスロードを使用しても、動的クラスのロード

A a =(A)Class.forName( "A")。newInstance();

私たちはまだコンパイル時にAクラスについて知る必要があります。私たちはクラスAを使用する必要がある場合、我々は単にコンストラクタを使用して作成することができます(そしてそれがメモリにロードされます):

A a = new A(); 

を私たちはクラスのコンストラクタの呼び出しを含むコードを任意のインスタンスを必要としない場合Aクラスのクラスは決して実行されないので、メモリにロードされることはありません

答えて

5

コンパイル時にクラスについて知る必要はありません。
設定ファイルからクラス名を読み込み、クラス名をハードコードすることなく、クラス名をインターフェイスにキャストすることができます。

は、我々はまだ、コンパイル時にクラスについて知る必要があり

SomeInterface a = (SomeInterface)Class.forName(config.readSomething()).newInstance(); 
1

を考えてみましょう。別の瓶で

エヘン...

public interface Foo {..} 

public class Bar implements Foo{..} 

その後、

Foo f = (Foo)Class.forName("Bar").newInstance(); 
関連する問題