繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM