기록

[이해하기] kotlin/Null 처리하기 본문

제대로 이해하기

[이해하기] kotlin/Null 처리하기

youngyin 2022. 3. 27. 17:08

Nullable과 Non-Nullable

코틀린은 기본적으로 객체는 null이 될 수 없다고 봅니다. 따라서 모든 객체들은 생성과 동시에 초기화해야 합니다.

var name : String // 초기화 값이 없어서 에러
var name : String? = null

세이프 콜 연산자 ?

? 연산자를 이용하면 메서드 호출, 혹은 객체 프로퍼티 접근과 null 체크를 한번에 할 수 있습니다. 만약 객체 참조가 null이면 세이프 콜 연산자의 반환값은 null이 됩니다.

fun reverse(name:String?) : String? {
    return name?.reversed()
}
reverse(null) // null

엘비스 연산자 ?:

엘비스 연산자는 ?연산자를 이용해 콜을 할 시 null을 반환하지 않고, 기본값을 반환합니다.

fun reverse(name:String?) : String? {
    return name?.reversed() ?: "unknown"
}
reverse(null) // "unknown"

확정 연산자 !!

절대 null이 아님을 보증하는 확정 연산자입니다.

fun reverse(name:String?) : String {
    return name!!.reversed()
}
reverse(null) // nullpointerexception

lateinit 키워드와 lazy 키워드

lateinit은 var로 선언한 변수의 늦은 초기화를 돕고, lazy는 val로 선언한 상수의 늦은 초기화를 돕습니다.

lateinit var lunch : String
lunch = "waffle"

val dinner : String by lazy {
    print("저녁 시간입니다")
    "sandwich"
}

출처

위 내용은 [Joyce의 안드로이드 앱 프로그래밍 with 코틀린]을 읽고 정리한 내용입니다.

95P~98P사이의 내용에 해당합니다.

Comments