【发布时间】:2011-12-29 08:58:08
【问题描述】:
我有一个这样的列表:
private List<T> myList = new ArrayList<T>();
我想获得 T 的 .class。我该怎么做?
我的意思是:
myList.getClass()
编辑: 我试过了:
Field genericField = Wrapper.class.getDeclaredField("myList");
ParameterizedType genericType = (ParameterizedType) genericField.getGenericType();
Class<?> genericClass = (Class<?>) genericType.getActualTypeArguments()[0];
当我调试它时
通用类型
的值为:
java.util.List
所以我认为这肯定与那个问题不同:Get generic type of java.util.List 因为如果你用T 声明一个类并稍后在另一种方法中为T 分配一些东西,T 持有的类就会消失。
【问题讨论】:
-
@oers 我认为这个问题与您的建议不同。因为我使用
T,它让一切变得不同。 -
@kamaci:从您的问题中不清楚 T 是否应该是具体类的占位符或封闭类的类型参数。在后一种情况下,说不可能的答案实际上是正确的。
-
@kamaci:啊,是的,它是不同的。 (最好提供更广泛的代码上下文。)不,没有办法做到这一点。
-
@MichaelBorgwardt 我试图解释它。
T是这里的占位符,我实例化了我的类,所以T持有一些东西,但之后我认为它消失了。