더북(TheBook)

일반적으로 !!를 그냥 쓰는 경우는 없다. 보통 역참조와 함께 쓴다.

NonNullAssertions/NonNullAssertCall.kt

import atomictest.eq

fun main() {
  val s: String? = "abc"
  s!!.length eq 3
}

널 아님 단언을 한 줄에 하나씩만 사용하면 NPE 예외가 발생했을 때 줄 번호를 보고 쉽게 오류 위치를 찾을 수 있다.

안전한 호출 ?.은 단일 연산자지만, 널 아님 단언 호출은 널 아님 단언(!!)과 역참조(.)로 이뤄진다. NonNullAssert.kt에서처럼 널 아님 단언만 사용해도 된다.

널 아님 단언을 사용하지 않고 안전한 호출이나 명시적인 null 검사를 활용하는 쪽을 권장한다. 널 아님 단언은 코틀린과 자바가 상호 작용하는 경우와 아주 드물지만 코틀린이 널 가능성을 제대로 검사하지 못하는데 대상이 null이 아님을 알 수 있는 경우를 위해 도입됐다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.