Kotlin

[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 자료형 검사와 변환

Leave a Reply

error: Content is protected !!