【发布时间】:2016-03-14 15:48:23
【问题描述】:
来自 C++,一些 Java 代码对我来说看起来很奇怪。有人可以向我解释以下代码片段应该做什么吗?
@SuppressWarnings("unchecked")
private static <T> Class<T> getGenericType(Class<?> clz) {
return (Class<T>) ((ParameterizedType) clz.getGenericSuperclass())
.getActualTypeArguments()[0];
}
我在回答另一个问题 (see here) 时阅读了这篇文章,我正试图详细了解该问题。
【问题讨论】:
-
它返回泛型的类型,所以如果你通过
ArrayList<String>- 它会返回String -
老实说,我认为它只是为了
@SuppressWarnings。除了调用getActualTypeArguments(),这段代码实际上没有做任何事情。泛型基本上都从实际的运行时代码中删除了。 -
“另一个问题”还有哪个问题?
-
@Lashane 你不能把这个方法传递给 ArrayList;它的参数类型是
Class不过你可以传入ArrayList<String>.class。 -
@markspace 没有
ArrayList<String>.class,只有ArrayList.class。