이전에 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 타입입니다
반응형
'Android > 안드로이드 스터디(Kotlin)' 카테고리의 다른 글
Kotlin] 35. .. 연산자 (0) | 2020.12.11 |
---|---|
Kotlin] 34. 제네릭 상속(in/out) (0) | 2020.12.11 |
Kotlin] 32. 함수 참조(Function Reference) (0) | 2020.12.10 |
Kotlin] 31. 함수 리터럴 (0) | 2020.12.10 |
Kotlin] 30. 데이터 클래스 (0) | 2020.12.10 |