generic (2) 썸네일형 리스트형 코틀린(Kotlin) - 런타임에서의 제네릭의 동작 알고 계시겠지만 JVM의 제네릭은 보통 타입 소거(type erasure)를 사용해서 구현됩니다. 타입 소거(type erasure) - 원소 타입을 컴파일 타임에만 검사하고 런타임에는 해당 타입 정보를 알 수 없는 것입니다. - 즉, 컴파일 타임에만 타입에 대한 제약 조건을 적용하고, 런타임에는 타입에 대한 정보를 제거한다는 뜻입니다. 이 말은 런타임에서 제네릭 클래스의 인스턴스에 타입 파라미터 정보가 들어있지 않다는 뜻입니다. 이번에는 코틀린 타입 소거가 어떤 영향을 끼치는지 살펴보고 함수를 inline으로 선언함으로써 이런 제약을 어떻게 우회할 수 있는지 확인하도록 하겠습니다. 먼저 결론부터 말씀드리자면, 함수를 inline으로 만들면 타입 파라미터가 소거되지 않게 할 수 있습니다. 런타임에서의 제.. 코틀린(Kotlin) - 제네릭 타입 파라미터 자바와 동일하게 제네릭을 사용하면 타입 파라미터를 받는 타입을 정의할 수가 있습니다. 문자열을 담는 리스트를 표현할 때 자바와 마찬가지로 List을 쓰는 것과 같이 타입 파라미터를 사용하면 훨씬 더 명확하게 타입 추론을 할 수 있게 됩니다. 예를 들어 리스트를 만들 때, 아래와 같이 변수의 타입을 지정해도 되고 val list: MutableList = mutableListOf() 변수를 만드는 함수의 타입 파라미터를 지정해도 됩니다. val list = mutableListOf() 제네릭 함수와 프로퍼티 예를들어, 리스트를 다루는 코드를 짜다보면 어떤 특정 타입을 지정하는 리스트뿐 아니라 모든 타입을 다룰 수 있는 리스트 관련 메소드가 필요한 경우가 생길 수 있습니다. 이럴 때 범용적으로 사용할 수 있.. 이전 1 다음