我有一个带有以下签名的方法:
<T> T getBody(Class<T> type)
将body对象作为指定的类型返回。如何调用它来返回
类型的对象Iterable<OProperty<?>>
我在仿制药之前做了很多Java,所以我的程序员在这些情况下有点生疏:)
答案 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)