我有一个具有内部Class属性的C类:
public class C{
private Class<?> clazz;
public void setClazz(Class<?> c){
this.clazz = c;
}
public Class<?> getClazz(){
return clazz;
}
}
Run Code Online (Sandbox Code Playgroud)
我想在另一个类中声明一个方法,所以它的返回类型是C.clazz的类型:
public class D{
public <T> T getInstance(C c){
//doesn't compile
//some reflective code to set T to c.getClazz?
return (c.getClazz.newInstance());
}
}
Run Code Online (Sandbox Code Playgroud)
所以,例如,getInstance(c),c将clazz设置为Class<B>,将返回一个新的B实例.有没有办法用反射做到这一点?