20

クラス型をパラメーターとして java.all のメソッドに渡したいのですが、それらはすべて同じコンストラクターパラメーターを持ち、そのメソッドでそのクラスのインスタンスを作成します。これは可能ですか?

数年後の更新: これに対する Sapnesh Naik の回答を確認してください。最新のようです。実行中のJavaスタックがないため、回答として受け入れていません。
PS: 確認できたら声をかけてください。

4

5 に答える 5

4

それを行うにはリフレクションを使用する必要がありますが、確かに可能です。

void MyMethod(Class className)
{
    try {
        Object obj = className.newInstance();
        //obj is a newly created object of the passed in type
    }
    catch (Exception ex) { }
}
于 2013-04-11T06:21:57.240 に答える
3

リフレクションを探しています。

メソッドは次のようになります。

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 ドキュメントはこちら

于 2013-04-11T06:23:14.200 に答える
1

はい、できます

void x(Class cls) throws InstantiationException, IllegalAccessException {
    cls.newInstance();
}

Class.newInstance が失敗する可能性があることに注意してください

IllegalAccessException - クラスまたはその nullary コンストラクターにアクセスできない場合。

InstantiationException - この Class が抽象クラス、インタフェース、配列クラス、プリミティブ型、または void を表している場合。または、クラスに nullary コンストラクターがない場合。または、インスタンス化が他の理由で失敗した場合。

詳細については API を参照してください

于 2013-04-11T06:27:58.750 に答える