首页 > 解决方案 > 您能否向我解释为什么下界通配符在我的示例中不起作用?

问题描述

public class aa {
    public static void main(String[] args)
    {
        Predicate<? super String> predicate = s -> true;

        Stream<CharSequence> stream1 = Stream.generate(() -> "growl! ");

        boolean b1 = stream1.limit(2).anyMatch(predicate);// Compiler error
    }
}

String 实现 CharSequence;据我所知,这意味着谓词必须接受 CharSequence。但是编译器说我必须将我的谓词转换成这样:

boolean b1 = stream1.anyMatch((Predicate<? super CharSequence>) predicate);

我不明白为什么我必须投射我的谓词。你能向我解释一下这里发生了什么吗?

标签: java

解决方案


推荐阅读