【发布时间】:2020-07-06 14:01:43
【问题描述】:
我有以下两个类:
class Generic<T>
{
}
class Foo extends Generic<Student>
{
}
在Generic 内部,我有一个方法需要获取通过T 传递的类的名称
这在 Java 中可能吗?我知道在 C# 中我只会使用 typeof。
我已尝试执行以下操作:
String className = new TypeToken<T>() {}.getClass().getName().toString();
然而,这不提供名称,只提供Generic$1
【问题讨论】:
-
您无法有效地创建泛型类型标记。您可以通过查看其泛型超类型的类型参数从非泛型类型标记(例如
new TypeToken<String>() {}或new TypeToken<List<Integer>>() {})中获取该类;但该类型参数是该类型标记的类型变量 T。 -
我重新打开了,因为它不是声称的问题的副本。在这种情况下,可以通过
Foo访问该类型(尽管此处要求子类不使用参数)。