4

重複の可能性:
リフレクションを使用してコンストラクターのパラメーターを使用してクラスのインスタンスを作成するにはどうすればよいですか?

発生する可能性はありますか?私はクラスを持っていますGerbil

public class Gerbil {
    private int gerbilNumber;
    public Gerbil(int gn){
        this.gerbilNumber = gn;
    }
    public void hop() {
        System.out.println("It's gerbil number" + this.gerbilNumber + "and it's hopping.");
    }

}

私はジェネリッククラスを持っていますTestGenerics

public class TestGenerics<T> {
    private Class<T> mClass;

    public TestGenerics(Class<T> cls){
        mClass = cls;
    }

    public T get(){
        try{
            return mClass.newInstance();
        }catch(Exception e){
            e.printStackTrace();
            return null;
        }
    }
}

そしてmainクラス:

public class HelloWorld {
    public static void main(String[] args) {
        TestGenerics<Gerbil> g = new TestGenerics<Gerbil>(Gerbil.class);
        Gerbil a = g.get();
        a.hop();
    }
}

問題は、のコンストラクターにGerbil整数値を提供する必要があるが、その方法がわからないことです(可能な場合)。それ以外の場合、空/デフォルトのコンストラクターを残すと、コードは正常に機能しますが、実際のクラスのコンストラクターにパラメーターを渡す必要がある場合に、インスタンスをジェネリッククラスから作成することはできますか?

4

1 に答える 1

11

これを試して:

public T get(){
    try{
        return mClass.getDeclaredConstructor( Integer.TYPE ).newInstance( 10 );
    }catch(Exception e){
        e.printStackTrace();
        return null;
    }
}
于 2012-10-24T09:09:21.697 に答える