检索泛型类的泛型参数的运行时值的最佳方法是什么?例如:
public class MyClass<T> {
public void printT() {
// print the class of T, something like:
// System.out.println(T.class.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我打电话
new MyClass<String>().printT()
Run Code Online (Sandbox Code Playgroud)
它将打印"字符串"
你没有.由于类型擦除,信息(大部分)在运行时丢失.如果你真的需要这门课,你就是这样做的:
public class MyClass<T> {
private final Class<T> clazz;
public MyClass(Class<T> c) {
if (c == null) {
throw new NullPointerException("class cannot be null");
}
clazz = c;
}
public void printT() {
System.out.println(clazz.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
然后你就可以访问它了.
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |