메서드 선언부를 보는데 해석이 안되는 부분이 있어서 찾아보았습니다.
<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);
에서 <? super T, ? extends Stream<? enteds R>>
를 해석하면,
? super T
는 ?는 T의 수퍼타입 중 하나라는 의미로 T이거나 T의 부모 클래스를 말합니다.
? extends R
은 ?는 R을 상속받는 것들 중 하나라는 의미로 R이거나 R의 자식 클래스를 의미합니다.
이러한 제네릭 표현은 와일드카드 타입이라고 부르며, 제네릭 타입을 좀 더 유연하게 표현할 수 있게 해줍니다.
git : https://github.com/BanditBool2/ReadingRecord/issues/25