Replies: 3 comments
-
JVM 위에서 작동하는 언어의 제네릭은 컴파일 타임에 검증을 마치면, 타입 정보가 지워진 채로 바이트코드가 생깁니다. 즉, 런타임 시에는 제네릭 클래스는 타입 파라미터에 대한 정보를 가지고 있지 않습니다. 하지만 kotlin 에서는 reified 키워드를 이용해 파라미터의 정보를 런타임시에도 가져올 수 있습니다. 이를 실체화된 타입 파라미터라고 합니다. inline 메서드에서만 reified 쓸수 있는 이유
|
Beta Was this translation helpful? Give feedback.
-
제네릭은 컴파일하고 바이트코드로 변환시 타입 정보가 소거되어 런타임에 제네릭 타입에 대해 알 수 없다. |
Beta Was this translation helpful? Give feedback.
-
reifiedJVM의 타입소거에 의해 타입이 지워진 것을 제네릭 타입의 파라미터 정보는 런타임시에 지워진다. → 이때 → 왜일까? → inline 키워드를 붙이면, 컴파일러는 호출식을 본문으로 바꿔버림 → 바이트 코드를 직접 붙임 |
Beta Was this translation helpful? Give feedback.
-
Kotlin에서 reified 키워드는 inline 함수 내에서만 사용할 수 있는 특수한 키워드로, 제네릭 타입을 런타임에 알 수 있게 해줍니다. 기본적으로 제네릭은 컴파일 타임에 타입이 결정되며, 런타임에는 타입 정보가 지워집니다. 하지만 reified를 사용하면 제네릭 타입의 정보를 런타임에서도 사용할 수 있게 됩니다.
reified는 inline 함수와 함께 사용될 때, 함수가 컴파일 타임에 인라인으로 치환되므로 제네릭 타입의 정보가 유지되고 런타임에서 해당 타입을 확인할 수 있게 됩니다.
Beta Was this translation helpful? Give feedback.
All reactions