더북(TheBook)

x!!는 ‘xnull일 수도 있다는 사실을 무시하라. 내가 xnull이 아니라는 점을 보증한다’라는 뜻이다. x!!xnull이 아니면 x를 내놓고, xnull이면 오류를 발생시킨다.

NonNullAssertions/NonNullAssert.kt

import atomictest.*

fun main() {
  var x: String? = "abc"
  x!! eq "abc"
  x = null
  capture {
    val s: String = x!!
  } eq "NullPointerException"
}

val S: String = x!!라는 정의는 코틀린이 x에 대해 알고 있는 내용을 무시하고 그냥 널이 될 수 없는 타입의 참조인 s에 대입하도록 명령한다. 코틀린에는 이런 코드에서 xnull인 경우 NullPointerException을 던지게 하는 지원 기능이 있다.

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