제네릭에서 많이쓰는


코틀린에서 <in T>

자바에서는 <? super T>

키워드 궁금한게 있는데


이게 제네릭 클래스에서 AAA<슈퍼(부모)타입> 을 AAA<서브(자식) 타입>에 대입할 수있게 해주는거라는데


궁금한게 일반적으로 반대로 되어야하는것 아닌가요? out T랑 ? extends T 가있는데 왜쓰는건가요?


그니까 다형성때문에 부모타입에 자식(서브)타입의 클래스들이 대입되어야하는것 아닌가요?


거꾸로 된거같은데 이런건 언제 왜 쓰는거에요?



보니까 몇몇 라이브러리 클래스에서 이미 이거 쓰는거같던데