При чтении исходного кода интерфейса Stream
я нашел эту подпись метода:
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
Интересно, почему тип ввода mapper
равен ? super T
, в то время как тип вывода ? extends R
, почему бы не использовать ? extends
для обоих?