-
[ Kotlin ] Null - 세이프콜, not-null, 엘비스 연산자카테고리 없음 2020. 7. 29. 17:34
Kotlin은 변수를 사용할 때 기본적으로 Null을 허용하지 않습니다. 만약 값이 할당되지 않은 변수를 사용하면 오류가 발생합니다.
Null 할당을 허용하기
세이프콜
변수에 Null을 할당을 허용하려면 자료형 뒤에 물음표 기호(?)를 붙이면 됩니다.
val a: Int? = null val b: String? = null
Nullable한 변수를 선언하게 될 경우 NullPointerException(NPE) 오류가 발생할 수 있습니다.
따라서 Kotlin에서 Null이 할당되어 있을 가능성이 있는 변수를 검사하여 안전하게 사용할 수 있는 기능을 제공합니다. 이를 세이프콜(?)이라고 합니다.
not-null
만약 세이프콜을 사용하지 않고 코드를 작성하고 싶으면 not-null 단정기호(!!)를 사용할 수 있습니다.
not-null 단정 기호는 null이 아님을 단정지으므로 컴파일러가 null 검사 없이 무시합니다. 따라서 null이 할당된 변수가 호출될 경우 NPE를 발생시킵니다.
엘비스 연산자 ( Elvis operator )
str1이라는 문자열 변수에 값이 존재할 때는 문자열의 길이를 반환하지만, 그렇지 않을 때는 null 대신 -1을 반환합니다. 모습이 C 언어의 삼항 연산자와 비슷하지만 엘비스 연산자는 물음표(?)와 콜론(:) 문자 사이에 아무것도 들어가지 않습니다.
출처