[android : kotlin] 코틀린 자료형 검사 : is , Any, as? 키워드 사용하기 & 사용 예시
변수의 자료형을 검사하는 방법
코틀린에서는 자료형을 검사하기 위해 is 키워드를 사용한다. Java 언어에서 instanceof() 메소드와 동일한 기능이다. 사용법은 어렵지 않다. 또 하나의 방법으로 Any키워드를 사용할 수 있다. Any 키워드는 코틀린에서 모든 자료형의 슈퍼 클래스이다. Any 키워드를 사용하게 되면 어떠한 자료형이라도 모두 될 수 있으며 필요한 자료형으로 언제나 변환이 가능하다. as 키워드는 형변환 할때 사용한다. as키워드에 물음표를 함께 사용하는 경우 캐스팅(형변환)시 오류가 발생하는 것을 방지할 수 있다.
■ is키워드 사용
fun main() { val num = 128 if (num is Int) { println(num); println(num is Int); } else if(num !is Int){ println("Not a Int") } }
[출력결과]
128 true
■ Any키워드 사용
fun main() { var a: Any = 1 println("a: $a type: ${a.javaClass}") a = 300L println("a: $a type: ${a.javaClass}") checkType("Today") checkType(11111) checkType(11111111111111) checkType(10f) } fun checkType(x: Any) { if(x is String) { println("X is String: $x") }else if(x is Int) { println("X is Int: $x") }else { println("X: $x type: ${x.javaClass}") } }
[출력결과]
a: 1 type: class java.lang.Integer a: 300 type: long X is String: Today X is Int: 11111 X: 11111111111111 type: class java.lang.Long X: 10.0 type: class java.lang.Float
■ as?키워드 사용
fun main (args: Array<String>) { val x = "Kotlin" val y: Int? = x as? Int //캐스팅 실패시 null로 초기화 : exception 발생하지 않음 if(y==null) { println("y는 null입니다.") } else { println("y는 ${y}입니다.") } val z: Int? = y as? Int ?: 0 // 캐스팅 실패시 0으로 초기화 if(z==null) { println("z는 null입니다.") } else { println("z는 ${z}입니다.") } }
[출력결과]
y는 null입니다. z는 0입니다.
[REFERENCE]
Do it! 코틀린 프로그래밍: 02-3 자료형 검사와 변환