我有,需要一个集合和一个类的对象,并返回一个可迭代实例可以遍历是指定类的实例集合中的所有成员我的实用工具类的一个方法。它的签名是:如何将泛型类型转换为具有泛型参数的泛型类型?
public static <T> Iterable<T> iterable (
Iterable<? super T> source, Class<T> requiredClass);
这非常适用于大多数使用情况,但现在我需要用一个通用类,Item<PROTOTYPE>
使用它。我明白,我不能肯定,通过所产生的迭代器返回的项目不能保证有任何特别的原型,所以我尝试如下施展它的返回:
Iterable<Item<?>> allItems = (Iterable<Item<?>>)
TypeCheckingIterator.iterable(source, Item.class);
不幸的是这将返回一个编译器错误“无法投从Iterable<Item>
到Iterable<Item<?>>
“
为什么它不能执行这个演员时我可以很高兴地投到Item<?>
?有没有一种方法可以强制它进行这种转换,而不必明确地转换迭代器返回的项目?
杜佩:http://stackoverflow.com/q/10869467/774444 – 2012-07-22 11:31:32
@LouisWasserman哪个遭完全相同的问题.. – 2012-07-22 11:53:55