可能重复:
How to create instance of a class with the parameters in the constructor using reflection?
是否可能发生以及如何发生?
我有一个班级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
的构造函数提供一个整数值,但不知道如何(如果可能的话)。否则,如果我留下一个空/默认构造函数,代码工作正常,但是当真实类的构造函数需要传递参数时,是否可以使实例形成泛型类?
答案 0 :(得分:10)
试试这个:
public T get(){
try{
return mClass.getDeclaredConstructor( Integer.TYPE ).newInstance( 10 );
}catch(Exception e){
e.printStackTrace();
return null;
}
}