有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

泛型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) 个答案

  1. # 1 楼答案

    好吧,我找到了我要找的东西,其实很简单:

    private String foo(Deque<String> words) {
        Iterator<String> iterator = words.descendingIterator();
        return String.join(" ", (Iterable<String>) () -> iterator);
    }
    

    根本不需要使用通配符