我写了下面的代码:
public static <T> void getList(Vector<T> result){
System.out.println(result.getClass().getName());
}
我想写T
的类名,但是写不出来。我该怎么做呢?
据我所知你不能。Java泛型使用类型擦除,因此在运行时Vector<T>
的行为就像没有任何模板参数的Vector
一样。
只能查询vector对象的元素类型。
下面是类型擦除的简短描述:http://docs.oracle.com/javase/tutorial/java/generics/erasure.html
参见这个问题的答案:Java泛型-类型擦除-何时发生以及发生什么
换句话说:
void someMethod(Vector<T> values) {
T value = values.get(0);
}
等价于:
void someMethod(Vector values) {
T value = (T) values.get(0);
}