检索泛型类的泛型参数的运行时值的最佳方法是什么?例如:
public class MyClass<T> {
public void printT() {
// print the class of T, something like:
// System.out.println(T.class.getName());
}
}
所以如果我打电话
new MyClass<String>().printT()
它将打印“字符串”
最佳答案
你不知道。由于 type erasure该信息(大部分)在运行时丢失。如果你真的需要这门课,这就是你要做的:
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());
}
}
然后您就可以访问它了。
关于Java:在运行时检索泛型参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1570954/