본문 바로가기
언어/Kotlin

코틀린 null 처리

by 김어찐 2022. 5. 25.
728x90
package nullsafe

fun main() {
    testFun1("문자열")
    //컴파일 에러가 아닌 런타임 에러이다
//    testFun1(null)

    testFun2("문자열")
    testFun2(null)

    testFun3("문자열")
    testFun3(null)

    testMethod1("안녕하세요")
    testMethod1(null)

    testMehod2("안뇽")
    testMehod2(null)
}
// !! 널을 허용하지 않는 변수에 널을 허용하는 변수를 담아준다
// 되도록 사용하지 말자
fun testFun1(str:String?){
    val value1:String = str!!
    println("value1 = ${value1}")
}

// ? 연산자
// null일 경우 뒤에 값 default로 사용
fun testFun2(str:String?){
    val value1:String = str ?: "기본문자열"
    println("value1 = ${value1}")
}

// ?. 연산자
// null값이 존재하면 값 자체를 null로 변한
fun testFun3(str:String?){
    println("str = ${str}")

    println("str?.length = ${str?.length}")
}

fun testMethod1(str: String?) {
    println(str?.length)

    // null이 아니면 스마트 캐스팅 발생
    // 가급적이면 is 사용
    if (str is String) {
        // 스마트 캐스팅 발생
        println(str.length)
    }
    // 가급적이면 is 사용
    if (str != null) {
        // 스마트 캐스팅 발생
        println(str.length)
    }
}

fun testMehod2(str: Any?) {
    if (str is String) {
        println(str.length)
    }
}
728x90

'언어 > Kotlin' 카테고리의 다른 글

코틀린 열거형  (0) 2022.05.25
코틀린 캐스팅  (0) 2022.05.25
코틀린 익명 중첩 클래스  (0) 2022.05.25
코틀린 Generic  (0) 2022.05.25
코틀린 DataClass  (0) 2022.05.25