자바나 코틀린에서 라이브러리를 개발할 때 제너릭 부분에서 컴파일 에러가 자주 발생한다.그러한 문제를 효과적으로 해결하려면 제너릭의 주요 개념 중 하나인 변성(Variance)을 이해해야 한다. 관련해서 막연한 단어가 많지만, 예시를 들어 이해가 가능하도록 포스팅 내용을 작성했다.변성의 정의제너릭에서는 List 타입이 있으면 List를 기저 타입(Base Type), Int를 타입 인자(Type argument)라고 정의한다.변성(Variance)은 기저 타입(Base type)이 같으면서 타입 인자(Type argument)가 다른 경우 두 타입이 서로 어떤 관계인지를 정의한 것이다.그림에서 SomeClass가 SomeClass의 하위 타입이라고 생각하기 쉽다. 그러나 그것은 개발자가 SomeClass에..