38
안전한 호출과 엘비스 연산자
코틀린은 널 가능성을 편리하게 처리할 수 있도록 여러 연산자를 제공한다.
널이 될 수 있는 타입에는 여러 제약이 가해진다. 널이 될 수 있는 타입의 참조를 단순히 역참조할 수 없다.
SafeCallsAndElvis/DereferenceNull.kt
fun main() {
val s: String? = null
// 컴파일되지 않는다
// s.length // [1]
}
• [1]의 주석을 해제하면 ‘Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?’이라는 컴파일 오류가 발생한다(String? 타입의 널이 될 수 있는 수신 객체에는 안전한(?.) 호출이나 널 아닌 단언(!!.) 호출만 사용할 수 있다는 뜻).