Non-Nullable 타입 : 기본적으로 Kotlin의 모든 유형은 Null을 허용하지 않습니다. 특정 유형(예 :String
)의 변수를 선언하는 경우 null 값을 보유 할 수 없습니다. 이러한 변수에 null을 할당하려고 하면 컴파일 시간 오류가 발생합니다.
Nullable 타입 : 변수가 Null 값을 가질 수 있또록 하려면 , 해당 타입에 물음표를 추가하여 nullable로 명시적으로 선언해야 합니다. (예 String?
) 이는 컴파일러에게 변수가 null일 수 있음을 알립니다.
?.
) :?.
을 도입했습니다. 객체가 null이면 , Safe Call은 아무 것도 하지 않고 null을 반환하여 NullPointerException을 발생시키지 않습니다.?:
) :?:
를 사용하면 표현식이 null로 평가될 때 기본값을 제공할 수 있습니다. 예를 들어 val length = null?.length ?: 0
은 name
이 null이 아니면 name
의 길이를 반환하고 , name
이 null이면 0
을 반환합니다.!!
) :!!
연산자는 강제로 모든 값을 Non-Null 타입으로 변환하고 값이 null인 경우 예외를 발생시킵니다. 이 연산자는 값이 절대 null이 아닐 때만 사용해야 합니다.as?
) :as?
연산자는 타입을 안전하게 형 변환을 시도합니다. 형 변환이 불가능한 경우 ClassCastException을 발생시키는 대신 null을 반환합니다.lateinit
을 사용한 늦은 초기화 :lateinit
수정자를 사용하면 선언 시점에 초기화하지 않고도 Non-Nullable 속성을 선언할 수 있습니다. 이는 나중에 주입되는 의존성에 유용하며 , 예를 들어 Android 개발에서 사용됩니다. 그러나 초기화되기 전에 lateinit
변수에 접근하면 예외가 발생합니다.if (x != null)
)를 지원합ㄴ디ㅏ. 이러한 검사 후에 컴파일러는 해당 범위 내에서 변수를 Non-Nullable 타입으로 스마트 캐스트하여 안전하게 접근할 수 있게합니다.let
사용하기 :?.let
)과 결합된 let
함수를 사용하면 객체가 non-null일 때 만 코드 블록을 수행할 수 있습니다.Kotlin은 NullPointerException의 가능성을 줄이고 코드를 더욱 견고하고 명확하게 만들기 위해 null 성을 효과적으로 관리할 수 있는 여러 도구를 제공합니다.