728x90
Kotlin의 타입시스템은 null references 위험을 제거하는 것을 목표로 함
Safe Call 연산자
fun main() {
val name : String? = null
val len = name?.length
val upperName = name?.uppercase()
println("${upperName}이고 이름자리는 ${len}자리입니다.")
}
- ?.로 표현되며 nullable한 변수를 검사하여 null일 경우 NullPointException을 발생시키지 않고 그대로 null을 반환함
엘비스 연산자
fun main() {
val name : String? = null
val len = name?.length?:0
val upperName = name?.uppercase()?:"no name"
println("${upperName}이고 이름자리는 ${len}자리입니다.")
}
- ?: 로 표현되며 ?:기준 왼쪽의 값이 null이 아닐경우 해당 값이 리턴되고, null일 경우 오른쪽 값을 리턴
Safe Cast 연산자
val name : String? = null
val upperName : String? = name as? String
- as? 로 표현되며 객체가 target타입이 아닌 경우 ClassCastException을 발생시키지 않고 null을 반환함
Non Null 확정자
fun main() {
val name : String? = null
val upperName = name!!.uppercase()
//NPE 발생
}
- !!로 표현되며 해당 객체가 null임을 확정하는 것이므로 null체크 없이 컴파일되고, null일 경우 NullPointException이 발생
'KOTLIN' 카테고리의 다른 글
[KOTLIN] SUSPEND 함수 (0) | 2022.06.06 |
---|---|
[KOTLIN] 코루틴 (0) | 2022.06.01 |
[KOTLIN] LATEINIT / LAZY (0) | 2022.05.22 |
[KOTLIN] 시퀀스 (SEQUENCES) (0) | 2022.05.22 |
[KOTLIN] 확장함수 (0) | 2022.05.22 |