개발일지

Kotlin in A..Z (27) - reified 본문

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)
}
Comments