クラスの新しいオブジェクトを作成するメソッドを作成しようとしていますが、多くの異なるクラスのオブジェクトを作成できるようにしたいので、各クラスのメソッドを作成することはできません。新しいオブジェクトを作成できるように、クラスをメソッドに渡す方法はありますか? 私のクラスはすべて同じコンストラクターを持っています。
質問する
6769 次
6 に答える
8
あなたが使用することができます
public <T> T instanciate(Class<? extends T> clazz) throws Exception {
return clazz.newInstance();
}
そしてそれを次のように呼び出します
MyObject o = instanciate(MyObject.class);
そのようにする場合、インスタンス化するクラスには、引数のないデフォルトのコンストラクターが必要です。そうしないと、java.lang.InstantiationException
.
于 2012-06-14T21:12:01.743 に答える
1
Abstract Factory パターンについて読んだことがありますか?
編集済み
ところで、リフレクションはアーキテクチャを作成するのに良い方法だとは思いません。同じコンストラクターを持つクラスがたくさんある場合は、リフレクションで 1 つのメソッドを作成する代わりに、Factory や Builder などの便利なパターンを使用してみてください。
于 2012-06-14T21:10:29.900 に答える
0
あなたは反省を求めていると思います。
この質問をチェックしてください:リフレクションとは何ですか? なぜそれが役立つのですか?
于 2012-06-14T21:11:30.540 に答える
0
Class.forNameはあなたが探しているものかもしれないと思います
于 2012-06-14T21:11:48.843 に答える
0
タイプ名にリフレクションを使用しswitch
て、やらなければならないことを行うことができます。
于 2012-06-14T21:11:07.347 に答える