Java实例化参数化类的类

时间:2012-12-18 21:06:07

标签: java generics reflection

这就是我所拥有的:

class Class1 <T>
{
     public void foo()
   {
      ParameterizedType parameterizedType = (ParameterizedType)getClass().getGenericSuperclass();
      Class<T> type = (Class<T>) parameterizedType.getActualTypeArguments()[0];
      System.out.println(type);
   }
}

class Class2 <G>
{
    public Class2 ()
    {
        Class1<G> class1 = new Class1<G>();
    }
}

但是当我调用class1.foo()时,我得到的是超类,而不是参数。

如果我这样做

Class1<String> class1 = new Class1<String>();

然后在Class1中调用class1.foo(),我得到String。

如何修复使用泛型类型Class2实例化Class1?

1 个答案:

答案 0 :(得分:0)

你做不到。在运行时,Class2不知道它的泛型类型参数是什么。