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을 던지게 하는 지원 기능이 있다.

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