Function의 variance 방향

입력 소비와 결과 생산 방향을 한 signature에 함께 표현한다.

Function<? super T, ? extends R>

입력

T 또는 T의 부모를 받을 수 있다.

출력

R 또는 R의 자식을 만들 수 있다.

Caller

넓은 소비자를 재사용한다.

Algorithm

결과를 R로 안전하게 읽는다.

핵심: generic은 기본 invariant이며 wildcard가 안전한 변화를 명시한다.