我有,需要一個集合和一個類的對象,並返回一個可迭代實例可以遍歷是指定類的實例集合中的所有成員我的實用工具類的一個方法。它的簽名是:如何將泛型類型轉換爲具有泛型參數的泛型類型?
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