[英]How do I Invoke a Generic Method with Specific Type Parameters?
我有以下签名的方法:
<T> T getBody(Class<T> type)
返回body对象作为指定类型。 如何调用它以返回类型的对象
Iterable<OProperty<?>>
在使用泛型之前,我做了很多Java工作,因此我的程序员fu在这些情况下有点生疏:)
这不能通过Class<T>
。 唯一允许的T
是原始类型,因为这是Class
可以参数化的所有参数(您可以拥有Class<List>
但不能拥有Class<List<String>>
)。
Class
和泛型不能很好地协同工作。 Class
用于表示具体的运行时类型,而泛型在编译时。 我们想拥有Class<Iterable>
和Class<Iterable<Something>>
等,但是在运行时只有一个这样的对象。 没有适合所有这些用途的类型。 Java选择了Class<Iterable>
。
您可以使用一些可疑的未经检查的强制类型转换来传递正确的类型:
getBody(Class<Iterable<OProperty<?>>>)(Class<?>)Iterable.class)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.