gpt4 book ai didi

java - 如何使用泛型参数将泛型类型转换为泛型类型?

转载 作者:行者123 更新时间:2023-11-30 04:43:51 27 4
gpt4 key购买 nike

我的一个实用程序类中有一个方法,它接受一个集合和一个类对象,并返回一个 Iterable 实例,该实例可以迭代作为指定类实例的集合的所有成员。它的签名是:

public static <T> Iterable<T> iterable (
Iterable<? super T> source, Class<T> requiredClass);

这对于大多数用例来说都非常有效,但现在我需要将它与泛型类 Item<PROTOTYPE> 一起使用。 。我知道我不能确定结果迭代器返回的项目不能保证具有任何特定的原型(prototype),因此我尝试按如下方式转换其返回:

Iterable<Item<?>> allItems = (Iterable<Item<?>>) 
TypeCheckingIterator.iterable(source, Item.class);

不幸的是,这会返回编译器错误“无法从 Iterable<Item> 转换为 Iterable<Item<?>>

为什么我可以施放Item却不能执行此施放?至Item<?>很高兴吗?有没有办法可以强制它进行此转换,而不必显式转换迭代器返回的项目?

最佳答案

如果您确定类型删除是安全的,则可以使用类型删除

Iterable<Item<?>> allItems = (Iterable<Item<?>>) (Iterable)
TypeCheckingIterator.iterable(source, Item.class);

Iterable<Item<?>> allItems =
TypeCheckingIterator.<Item<?>>iterable(source, Item.class);

关于java - 如何使用泛型参数将泛型类型转换为泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11599887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com