[kotlin] 널 타입을 처리하는 패턴과 규칙

Kotlin은 널 안전성을 향상시키기 위해 쉽게 사용할 수 있는 다양한 기능을 제공합니다. 널 타입을 다루는 것은 중요한 개발 과제 중 하나이며, Kotlin은 이를 위해 몇 가지 패턴과 규칙을 제시합니다. 이 글에서는 Kotlin에서 널 타입을 다루는 일반적인 패턴과 규칙에 대해 살펴보겠습니다.

1. 안전한 호출 연산자 (Safe Call Operator)

안전한 호출 연산자(?.)는 객체가 널인지 여부를 검사한 후 안전하게 메서드를 호출하거나 프로퍼티에 접근하는 데 사용됩니다.

val length: Int? = str?.length

위 예제에서 str이 널이 아닌 경우에만 length 프로퍼티에 접근할 수 있습니다.

2. 엘비스 연산자 (Elvis Operator)

엘비스 연산자(?:)는 널일 때 대체값을 지정하는 데 사용됩니다.

val nonNullStr: String = nullableStr ?: "Default"

nullableStr이 널이 아닌 경우 해당 값을 그대로 사용하고, 널일 경우에는 “Default” 값을 사용합니다.

3. 널 타입 검사 (Null Check)

null 값 여부를 검사하기 위해 is 연산자와 안전한 호출 연산자를 함께 사용할 수 있습니다.

if (str is String && str.isNotEmpty()) {
    println(str)
}

위 예제에서 strString 타입이면서 비어있지 않은 경우에만 해당 블록이 실행됩니다.

4. 널 타입에 대한 확실한 선언 (Definite Declaration of Nullability)

플랫폼 타입에 대해 명시적으로 널이 될 수 있다는 것을 표시하기 위해 !를 사용할 수 있습니다.

val nonNullStr: String = nullableStr!!

nullableStr이 널이 아님을 개발자가 확신하는 경우에만 사용되어야 합니다.

이러한 패턴과 규칙을 활용하여 Kotlin에서 널 타입을 안전하게 다룰 수 있습니다.

더 자세한 내용은 Kotlin 공식 문서를 참고하시기 바랍니다.

이상으로 Kotlin에서 널 타입을 다루는 패턴과 규칙에 대해 알아보았습니다. 감사합니다.