Java 从迭代器转换<;T>;到迭代器<;U>;其中T是U的一个子类

Java 从迭代器转换<;T>;到迭代器<;U>;其中T是U的一个子类,java,generics,Java,Generics,给定一个类T,它是U的子类,将迭代器强制转换为迭代器安全吗?假设演员们是安全的,除了以下方式之外,还有其他更优雅(无警告)的方式吗 Iterator<T> it = <insert your Iterator<T> here...>; Iterator<U> it2 = (Iterator<U>)(Iterator<? extends U>)it; 迭代器it=; 迭代器it2=(迭代器)(迭代器我同意,我看不出任何不安全

给定一个类
T
,它是
U
的子类,将
迭代器
强制转换为
迭代器
安全吗?假设演员们是安全的,除了以下方式之外,还有其他更优雅(无警告)的方式吗

Iterator<T> it = <insert your Iterator<T> here...>;
Iterator<U> it2 = (Iterator<U>)(Iterator<? extends U>)it;
迭代器it=;

迭代器it2=(迭代器)(迭代器我同意,我看不出任何不安全的原因

我相信

Iterator<U> it2 = (Iterator) it;
Iterator it2=(Iterator)it;
应该足以使强制转换编译,但如果希望在没有警告的情况下隐藏警告,则仍然必须隐藏警告。如果您了解警告的原因,并且知道它在这种情况下不适用,则隐藏警告是可以的


也许无论您使用什么需要
迭代器的代码,都应该进行重构以接受
迭代器。我确实按照您建议的方式重构了代码。这是一个纯粹的理论问题,我认为社区可能会感兴趣。