クラス型をパラメーターとして java.all のメソッドに渡したいのですが、それらはすべて同じコンストラクターパラメーターを持ち、そのメソッドでそのクラスのインスタンスを作成します。これは可能ですか?
数年後の更新: これに対する Sapnesh Naik の回答を確認してください。最新のようです。実行中のJavaスタックがないため、回答として受け入れていません。
PS: 確認できたら声をかけてください。
それを行うにはリフレクションを使用する必要がありますが、確かに可能です。
void MyMethod(Class className)
{
try {
Object obj = className.newInstance();
//obj is a newly created object of the passed in type
}
catch (Exception ex) { }
}
リフレクションを探しています。
メソッドは次のようになります。
public void m1(Class c) {
try {
Object obj = c.newInstance();
//do something with your new instance
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
}
}
Reflection API の Oracle ドキュメントはこちら
はい、できます
void x(Class cls) throws InstantiationException, IllegalAccessException {
cls.newInstance();
}
Class.newInstance が失敗する可能性があることに注意してください
IllegalAccessException - クラスまたはその nullary コンストラクターにアクセスできない場合。
InstantiationException - この Class が抽象クラス、インタフェース、配列クラス、プリミティブ型、または void を表している場合。または、クラスに nullary コンストラクターがない場合。または、インスタンス化が他の理由で失敗した場合。
詳細については API を参照してください