더북(TheBook)

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()
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.