Kotlin

[Android] [Kotlin] Null Safety

Design-loving front-end engineer 2021. 8. 30. 17:28

?  (Nullable)

✔  기본 변수는 모두 null이 입력되지 않음

✔  null 값을 입력하기 위해서는 변수를 선언할 때 뒤에 ?를 입력

 

[ 변수에 null 허용 설정하기 ]

var nullable: String?
nullable = null

var notNullable: String
notNullable = null  // Error

[ 함수 파라미터에 null 허용 설정하기 ]

fun nullParameter(str: String?) {
    if (str != null) {
        var length2 = str.length
    }
}

◽  파라미터 str에 null이 허용되었기 때문에 함수 내부에서 null 체크를 하기 전에는 str를 사용할 수 없음

 

[ 함수의 리턴 타입에 null 허용 설정하기 ]

fun nullReturn(): String? {
    return null
}

 

?.  Safe Call : 안전하게 호출하기

✔  null 체크를 간결하게

✔  Nullable인 변수 다음에 ?.을 사용하면 해당 변수가 null인 경우 ?. 다음의 메서드나 프로퍼티를 호출하지 않음

fun testSafeCall(str: String?): Int? {
    // str이 null이면 length를 체크하지 않고 null을 반환
    var resultNull: Int? = str?.length
    return resultNull;
}

 

?:  Elvis Operator : Null 값 대체하기

✔  원본 변수가 null일 때 넘겨줄 기본값 설정

fun testElvis(str: String?): Int {
    // length 오른쪽에 ?:을 사용하면 null일 경우 ?: 오른쪽 값이 반환
    var resultNonNull: Int = str?.length?:0
    return resultNonNull;
}