x!!는 ‘x가 null일 수도 있다는 사실을 무시하라. 내가 x가 null이 아니라는 점을 보증한다’라는 뜻이다. x!!는 x가 null이 아니면 x를 내놓고, x가 null이면 오류를 발생시킨다.
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에 대입하도록 명령한다. 코틀린에는 이런 코드에서 x가 null인 경우 NullPointerException을 던지게 하는 지원 기능이 있다.