2014-09-11 160 views
0

我已经使用this method取回我的泛型类型,并没有什么问题...... 直到现在
现在,我有这样的结构:

public class Toto<T> extends OtherOne<X,Y,Z> {...}

,当我使用

((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];

它返回我型我OtherOne类Class<X>,不是Class<T>

有没有人遇到过这个问题?无论我尝试过什么都行不通T_T,我不想使用this solution将课程作为我的构造函数的参数Class实例扩展了泛型超类

回答

-1

为了了解T是否必须在子类中被捕获。例如:

public class StringToto extends Toto<String> {} 
Class<?> t = (Class<?>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0]; 

这种情况是因为类型只能在运行时检索,如果它们是类型定义的一部分。

+0

这不是我要求的,请再读一遍:public class Toto extends OtherOne {...}。我得到了一个泛型类,它扩展了其他泛型类 – 2014-09-18 08:34:04

+0

目前还不清楚你想要实现的是什么 - 你试图获得'T'的价值吗? – Jonathan 2014-09-18 21:29:06

+0

是的,我需要得到类的T,但在一个类扩展一个类有泛型,所以通用((ParameterizedType))getClass()。getGenericSuperclass())。getActualTypeArguments()[0];不工作! – 2014-09-19 09:00:16