Has*_*tlu 5 java generics methods
我写了这段代码:
public static <T> void getList(Vector<T> result){
System.out.println(result.getClass().getName());
}
Run Code Online (Sandbox Code Playgroud)
我想写出类名T,但我无法得到它.我怎样才能做到这一点?
con*_*oly 14
据我所知你不能.Java泛型使用类型擦除,因此在运行时,其Vector<T>行为就像Vector没有任何模板参数一样.
你可以做的是查询向量元素的类型.
以下是类型擦除的简短描述:http: //docs.oracle.com/javase/tutorial/java/generics/erasure.html
另请参阅此问题的答案: Java泛型 - 类型擦除 - 何时以及发生了什么
换一种说法:
void someMethod(Vector<T> values) {
T value = values.get(0);
}
Run Code Online (Sandbox Code Playgroud)
相当于:
void someMethod(Vector values) {
T value = (T) values.get(0);
}
Run Code Online (Sandbox Code Playgroud)
在运行时,但对您要转换的类型进行一些编译时检查.
| 归档时间: |
|
| 查看次数: |
1553 次 |
| 最近记录: |