6

我写了这段代码:

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

我想写 的类名T,但我无法得到它。我怎样才能做到这一点?

4

1 回答 1

14

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

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

这是类型擦除的简短描述: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);
}

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

于 2013-05-18T20:17:04.693 回答