如何从java </t>中的Vector <t>获取T类

时间:2013-05-18 20:15:04

标签: java generics methods

我写了这段代码:

public static <T> void getList(Vector<T> result){
    System.out.println(result.getClass().getName());
}

我想写出T的班级名称,但我无法得到它。我怎么能这样做?

1 个答案:

答案 0 :(得分:14)

据我所知你不能。 Java泛型使用类型擦除,因此在运行时,Vector<T>的行为就像没有任何模板参数的Vector

您可以做的是查询向量元素的类型。

以下是类型擦除的简短描述: http://docs.oracle.com/javase/tutorial/java/generics/erasure.html

另见这个问题的答案: Java generics - type erasure - when and what happens

换句话说:

void someMethod(Vector<T> values) {
    T value = values.get(0);
}

相当于:

void someMethod(Vector values) {
    T value = (T) values.get(0);
}

在运行时但是对你要转换的类型进行一些编译时检查。