我在阅读泛型时遇到了PECS(制片extends人和消费者的super简称).
能否给我一个人解释如何使用佩奇之间解决困惑extends和super?
许多Java Stream接口方法在参数中使用下界通配符
例如
Stream<T> filter(Predicate<? super T> pred)
Run Code Online (Sandbox Code Playgroud)
和
void forEach(Consumer<? super T> action)
Run Code Online (Sandbox Code Playgroud)
Predicate<? super T>在Predicate<T>这里使用的好处是什么?
我知道,Predicate<? super T>可以将T和超级类型的谓词对象作为参数传递给方法,但是我无法想到在特定类型上需要超级类型的谓词的情况?
例如,如果我有一个Stream<Integer>i,则可以将Predicate<Integer>, Predicate<Number>, and Predicate<Object>对象作为参数传递给它的filter方法,但是为什么有人会传递Predicate<Object>over Predicate<Integer>?在这里
使用的好处是<? super T>什么?