Android/안드로이드 스터디(Kotlin)

Kotlin] 33. 타입 매개변수 비교하기(reified)

김마리님 2020. 12. 11. 10:33

이전에 instanceof와 유사한 함수로 is 키워드를 쓴다고 했다.

그런데, 제네릭에서 타입을 비교하려고 코드를 쓰면..

 

T에서 컴파일 오류가 발생한다.

무슨 오류인가.. 보면

 

지워진 유형에 대해서 검사할 수 없다고 하는데, 이건 JVM 때문이다. JVM이 제네릭으로 선언된 일반 유형을 다 지워버리기 때문에, JVM에게 지우지 말라고 요청을 드려야 한다. 그 명령어가 reified이다. 이걸 제네릭 타입 T 앞에 붙여준다.

 

package refineEx

inline fun <reified T> check() {
    val number = 0
    if (number is T) {
        println("T는 Int 타입입니다")

    }
}

fun main() {
    check<Int>()
}

 

 

결과 :

 

T는 Int 타입입니다

반응형