[Kotlin] Kotlin에서 null처리 방법

[Kotlin] Kotlin에서 null처리 방법

1) Nullable type

var name: String? = null
  • Nullable 타입이란 선언변수 또는 반환 타입에 ?를 붙여 Nullable 타입을 선언한다.
    • 💡 Nullable 타입은 해당 변수 또는 표현식이 null일 수 있다는 것을 나타낸다.
    • ? 를 붙임으로써 null이 가능한 변수임을 명시적으로 표현한다.
  • 자바에서는 변수에 null을 할당할 수 있고, 이로 인해 NullPointerException이 발생할 수 있다.
  • 하지만 코틀린은 type 시스템을 통해 null 안전성을 제공하며, 변수의 타입에 null을 허용할지 여부를 명시적으로 지정한다.
  • nullable이 아닌 변수에 null을 넣으면 컴파일 타임에 에러를 발생시킨다. (자바는 런타임에 NPE 발생)

2) ?. (Null safe operator)

  val length = name?.length
  • 안전 호출 연산자란 Nullable 객체의 프로퍼티나 메서드에 접근할 때, Null을 안전하게 처리하기위해 ?. 연산자를 지원한다.
  • 이 연산자는 객체가 null이 아닌 경우에만 접근을 시도하고, null인 경우에는 null을 반환한다.

3) ?: (Elvis operator)

  val length = name?.length ?: 0
  • 엘비스 연산자란 Nullable 객체가 null인 경우, 엘비스 연산자를 사용하여 기본값을 지정할 수 있다.

  • 엘비스 연산자는 Nullable 객체가 null인 경우, 우측에 있는 기본값을 반환한다.

  • 생긴게 엘비스 프레슬리 헤어를 닮았다고 해서 붙여진 이름이란다.

4) as? (Safe cast)

  val number: Any? = "123"
  		val intValue: Int? = number as? Int
  • 안전한 캐스트란 **Nullable 객체를 캐스트할 때, 안전한 캐스트를 사용하여 **캐스트가 실패할 경우 null을 반환한다.

5) Non-null

  • Non-null이란 단언 Nullable 객체를 Non-null 타입으로 강제로 캐스트한다.
  • 이 연산자는 객체가 null인 경우 NullPointerException을 발생시킬 수 있으므로 주의해야 한다.

© 2023. All rights reserved.

AgileCatch