4.2.3 널 아님 단언 연산자
readLine() 함수와 관련해 !! 연산자를 이미 살펴봤다. !! 연산자는 널 아님 단언(not-null assertion)이라고도 부르는데, KotlinNullPointerException 예외(JVM에서 이 클래스는 악명 높은 NullPointerException의 하위 클래스다)를 발생시킬 수 있는 연산자다. 이 연산자가 붙은 식의 타입은 원래 타입의 널이 될 수 없는 버전이다. 기본적으로 널 아님 단언은 자바 프로그램의 널 관련 동작, 즉 널 값을 역참조하려 할 때 예외를 던지는 동작을 부활시킨다. 다음 예제는 이런 동작을 보여준다.
val n = readLine()!!.toInt()
일반적으로 널이 될 수 있는 값을 사용하려면 그냥 예외를 던지는 방식보다 더 타당한 응답을 제공해야 하기 때문에 이 연산자를 사용하지 말아야 한다. 하지만 이 연산자 사용을 정당화할 수 있는 경우가 있다. 예를 들어 다음 프로그램을 살펴보자.
fun main() { var name: String? = null fun initialize() { name = "John" } fun sayHello() { println(name!!.uppercase()5) } initialize() sayHello() }