Kotlin/포스팅

코틀린 널 가능성

짜집퍼박사(짜박) 2023. 12. 30. 14:30

코틀린에서는 널 가능성(Nullable)을 안전하게 다룰 수 있는 기능을 제공합니다. 이는 Kotlin이 null을 처리하는 강력한 방법 중 하나입니다. 기본적으로 Kotlin에서는 변수 또는 속성에 대해 명시적으로 널을 허용하거나 허용하지 않는지를 선언합니다.

 

널이 될 수 있는 타입 선언

기본적으로 변수는 널이 될 수 없는 타입으로 선언됩니다. 예를 들어,

val name: String = "John"

이 경우 name은 널이 될 수 없는 String 타입입니다. 하지만 경우에 따라 null도 허용해야 할 수 있습니다. 이때 타입에 ?를 추가하여 널이 될 수 있는 타입으로 선언합니다.

val nullableName: String? = null

이렇게 하면 nullableName은 널이 될 수 있는 String 타입이 됩니다.

 

안전 호출 연산자 ?

널이 될 수 있는 타입에 대해 메서드나 프로퍼티에 접근할 때, 안전 호출 연산자 ?.를 사용하여 널을 안전하게 다룰 수 있습니다.

val length: Int? = nullableName?.length

만약 nullableName이 null이라면, length도 null이 됩니다. 그러나 안전 호출 연산자를 사용하면 null인 경우에도 예외가 발생하지 않고 null을 반환합니다.

 

엘비스 연산자 ?

val lengthOrZero: Int = nullableName?.length ?: 0

만약 nullableName이 null이라면 0이 lengthOrZero에 할당됩니다.

 

널 병합 연산자 !!

널이 될 수 있는 타입을 강제로 널이 아닌 타입으로 캐스팅하고자 할 때 !!를 사용할 수 있습니다. 그러나 이 연산자는 사용 시 주의가 필요하며, 만약 해당 변수가 null이라면 NullPointerException이 발생합니다.

val length: Int = nullableName!!.length

안전한 사용에 비해 훨씬 주의를 요구하는 방법이므로 사용을 피하는 것이 좋습니다.

 

타입 캐스팅과 널 가능성

타입 캐스팅에서도 널 가능성을 고려해야 합니다. 안전한 타입 캐스팅을 위해서는 as?를 사용할 수 있습니다.

val strLength: Int? = nullableName as? String

이렇게 하면 만약 nullableName이 String이 아니라면 strLength은 null이 됩니다.

 

이러한 기능들은 Kotlin에서 널을 안전하게 다룰 수 있도록 도와주는 중요한 도구들입니다. 널 가능성에 대한 고려를 통해 안전한 코드를 작성할 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 널 아님 단언 연산자  (0) 2023.12.30
코틀린 스마트 캐스트  (0) 2023.12.30
코틀린 지역 클래스  (0) 2023.12.30
코틀린 내포된 클래스  (0) 2023.12.30
코틀린 멤버 가시성  (0) 2023.12.29