코틀린에서는 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]와 같이 널이 될 수 있는 타입의 멤버를 참조하는 경우, 코틀린은 오류를 발생시킨다.
대부분 타입의 값은 메모리에 있는 객체에 대한 참조로 저장된다. 역참조의 의미가 바로 이것이다. 객체에 접근하기 위해서는 메모리에서 객체를 가져와야 한다.