我想使用从类的字段中获取的类型(使用反射)来实例化具有泛型的类。
注意:我省略了希望易于阅读的异常。
public class AClass {
class BClass<T> {
T aMemba;
}
public void AMethod() {
Class c = Class.forName("com.bla.flipper");
Field f = c.getField("flipIt");
// Here is my difficulty, I want to instantiate BClass with the type of
// field 'f' but the compiler won't let me.
Class typeClass = f.getType();
BClass<typeClass> = new BClass<typeClass>();
}
}
我想实现的目标合理吗?关于如何解决这个问题有任何想法吗?
谢谢!
最佳答案
您可以捕获typeClass类型的type参数:
Field f = ...;
Class<?> typeClass = f.getType();
withClassCapture(typeClass);
private <T> void withClassCapture(Class<T> klazz) {
BClass<T> instance = new BClass<T>();
// ... do your thing
}