본문 바로가기
Android/안드로이드 스터디(Kotlin)

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

by 김마리님 2020. 12. 11.

이전에 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 타입입니다

반응형