4

以下の行を見てください。

targetClass = Class.forName(className).newInstance().getClass();

ここでの私の質問は、なぜ彼は newInstance().getClass(); を呼び出すのですか?

書くだけでいいのか

targetClass = Class.forName(className);

?

4

2 に答える 2

2

newInstance().getClass()インスタンス化された場所と同じClassインスタンスが生成されるため、を呼び出す意味はありません 。

むしろ、すぐに「ドロップ」される追加のインスタンスを作成します。クラスにデフォルトのコンストラクターがない場合でも、機能しません。

また、インスタンス化、初期化などのコストが注目に値する場合があります。

于 2013-02-05T11:14:17.463 に答える
2

はい。

Class<T> targetClass = Class<T>.forName(className);

また、オブジェクトの作成では、getConstructor をより適切に使用します。

T obj = targetClass.getConstructor().newInstance();

Class.newInstanceを呼び出すと、javadoc に記載されている問題が発生します。

于 2013-02-05T11:17:52.577 に答える