以下の行を見てください。
targetClass = Class.forName(className).newInstance().getClass();
ここでの私の質問は、なぜ彼は newInstance().getClass(); を呼び出すのですか?
書くだけでいいのか
targetClass = Class.forName(className);
?
以下の行を見てください。
targetClass = Class.forName(className).newInstance().getClass();
ここでの私の質問は、なぜ彼は newInstance().getClass(); を呼び出すのですか?
書くだけでいいのか
targetClass = Class.forName(className);
?
newInstance().getClass()
インスタンス化された場所と同じClass
インスタンスが生成されるため、を呼び出す意味はありません 。
むしろ、すぐに「ドロップ」される追加のインスタンスを作成します。クラスにデフォルトのコンストラクターがない場合でも、機能しません。
また、インスタンス化、初期化などのコストが注目に値する場合があります。
はい。
Class<T> targetClass = Class<T>.forName(className);
また、オブジェクトの作成では、getConstructor をより適切に使用します。
T obj = targetClass.getConstructor().newInstance();
Class.newInstanceを呼び出すと、javadoc に記載されている問題が発生します。