Kotlin (코틀린)
Kotlin in A..Z (27) - reified
강태종
2020. 7. 19. 04:47
reified의 필요성
코드
fun <T> genericFunction() {
// Error Kotlin: Cannot use 'T' as reified type parameter. Use a class instead.
println(T::class.java)
}
위 함수는 일반적인 제네릭 함수이다. 위 함수 같은 경우는 Java처럼 T 형식 매개변수가 런타임에 삭제되기 때문에 T에 접근할 수 없다.
자바에서 접근하던 방법
매개변수를 받아서 실행시간에 사라지지 않게 했다.
코드
<T>
void genericFunction(T arg) {
arg.getClass();
}
reified
- inline 함수에만 사용할 수 있다.
- inline처리 될 때 코드가 복사되면서 실제 자료형을 알 수 있기 때문에 런타임에서도 사용할 수 있다.
코드
inline fun <reified T> genericFunction(arg: T) {
println(T::class.java)
}