스터디/이펙티브코틀린
아이템 24 - 제네릭 타입과 variance 한정자를 활용하라
제네릭 타입(T)에 한정자 out과 in이 붙은 경우 다음과 같이 생각하자. out : T는 반환 타입으로만 사용할 수 있다. in: T는 타입 매개변수로만 사용할 수 있다. variance: 가변성, 차이 여기서 variance 한정자는 out과 in 키워드를 의미한다. out: 공변성(covariant)으로 만든다. 자바의 extends와 유사하다. 상한을 지정한다. out 한정자를 사용하면서 발생하는 차이는 아래 코드로 설명한다. class Cup fun main() { val anys: Cup = Cup // 컴파일 에러, 서로 관련이 없는것으로 취급 } class Cup fun main() { val anys: Cup = Cup // Any를 기반으로 하는 모든 타입을 허용 } in: 반변성(c..