[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]

