코틀린에서 프로젝션(projection)은 제네릭 타입의 일부만을 사용하거나 제한하여 변성을 다루는 방법입니다. 프로젝션을 통해 사용 지점에서 타입의 변성을 다양하게 조절할 수 있습니다. 코틀린에서는 세 가지 종류의 프로젝션을 사용합니다: 선언 지점 변성(out), 하위 타입 제한(in), 스타 프로젝션(*). 1. 선언 지점 변성 (out) 선언 지점 변성은 제네릭 타입을 사용하는 곳에서만 특정 타입 파라미터를 더 상위 타입으로 취급하는 방법입니다. out 키워드를 사용합니다. class Box(val value: T) fun useProducer(producer: Box) { // 생산된 값을 사용하는 로직 } val stringProducer: Box = // ... useProducer(strin..