泛型Java create Iterable<?在没有警告的情况下从迭代器<SubClass>扩展超类>
如何从Iterator<SubClass>
正确创建Iterable<? extends SuperClass>
假设我有一个Iterator<String>
,我想使用一个Iterable<? extends CharSequence>
的方法。这当然是不可能的:
private String foo(Deque<String> words) {
Iterator<String> iterator = words.descendingIterator();
return String.join(" ", () -> iterator);
}
我唯一能让它编译的方法就是
private String foo(Deque<String> words) {
Iterator<? extends CharSequence> iterator = words.descendingIterator();
return String.join(" ", () -> (Iterator<CharSequence>) iterator);
}
但我得到了一个未经检查的警告。有没有一种干净的方法
# 1 楼答案
好吧,我找到了我要找的东西,其实很简单:
根本不需要使用通配符