我想使用从类的字段中获取的类型(使用反射)来实例化具有泛型的类。
注意:我省略了希望易于阅读的异常。

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
}

07-24 19:05