더북(TheBook)

코틀린에서는 null이 될 수 있는 타입을 단순히 역참조(dereference)(즉, 멤버 프로퍼티나 멤버 함수에 접근)할 수 없다.

NullableTypes/Dereference.kt

import atomictest.eq

fun main() {
  val s1: String = "abc"
  val s2: String? = s1

  s1.length eq 3 // [1]
  // 컴파일되지 않는다
  // s2.length   // [2]
}

[1]에서는 널이 될 수 없는 타입의 멤버에 접근할 수 있다.

[2]와 같이 널이 될 수 있는 타입의 멤버를 참조하는 경우, 코틀린은 오류를 발생시킨다.

대부분 타입의 값은 메모리에 있는 객체에 대한 참조로 저장된다. 역참조의 의미가 바로 이것이다. 객체에 접근하기 위해서는 메모리에서 객체를 가져와야 한다.