如何调用具有特定类型参数的通用方法?

时间:2013-05-17 05:18:44

标签: java generics

我有一个带有以下签名的方法:

<T> T getBody(Class<T> type)

将body对象作为指定的类型返回。如何调用它来返回

类型的对象
Iterable<OProperty<?>>

我在仿制药之前做了很多Java,所以我的程序员在这些情况下有点生疏:)

2 个答案:

答案 0 :(得分:5)

使用Class<T>无法做到这一点。唯一允许的T是原始类型,因为可以Class进行参数化(您可以Class<List>但不能Class<List<String>>)。

答案 1 :(得分:0)

Class和泛型不能很好地协同工作。 Class用于表示具体的运行时类型,而泛型是在编译时。我们希望有Class<Iterable>Class<Iterable<Something>>等,但在运行时只有一个这样的对象。没有任何类型适合所有这些用途。 Java选择了Class<Iterable>

你可以使用一些可疑的未经检查的强制转型来获得传递给它的正确类型:

getBody(Class<Iterable<OProperty<?>>>)(Class<?>)Iterable.class)