코틀린 Null 안전성이란?
2021.10.25 - [프로그래밍/Kotlin] - [ Kotlin ] 코틀린 Null 안전성이란? (Null Safety)
위 링크를 타고 들어가면 코틀린 NUll 안전성에 대해 알 수 있다.
코틀린(Kotlin)에서 Null을 안전하게 처리하는 방법 6가지
1. if-else 문으로 Null 인지 처리
var nullable:String ?= null
val text = if(nullable != null) "not null" else "null"
println(text)
- 변수 nullable변수에 null이 할당되었는지 확인하는 조건문이다.
- 제일 쉽게 떠올릴수있고 처리할 수 있는 방법이다.
2. ' ?. ' - 안전 호출 연산자 (safe calls)
val nullable: String? = null
println(nullable?.length)
- 코틀린에서 nullable 한 변수를 처리할 때 가장 자주 사용되는 방법이라고 한다.
- 안전 호출 연산자는 '?' 이다.
- null값을 검사하여 null이면 건너뛰고 null이 아닐 때는 호출된 연산을 실행한다.
3. '?:' - Elvis 연산자
var nullable: String? = null
var nonNullable: String = nullable ?: "반환 될 문자열"
- Elvis 연산자는 '?:' 이다.
- 왼쪽의 피연산자(nullbale)가 null 이면 오른쪽 피연산자("반환될 문자열")를 실행하고
오른쪽 피연산자("반환 될 문자열")가 null 이면 왼쪽 피연산자(nullbale)를 실행한다.
4. '!! ' - double-bang 연산자 (non-null 단언 연산자)
var nullable: String? = null
val lengthOfText = nullable!!.length
- non-null 단언 연산자는 '!! ' 이다.
- 이 연산자 nullable 변수에 쓰면 ‘nullable 변수이지만 여기에 null이 절대 할당되지 않았음을 내가 단언한다.’라는 의미를 지님.
✅주의
NPE(NullPointerException)를 일으킬 수 도 있으므로 주의 깊게 사용해야 한다.
5. ' as? ' - Safe Cast
val aInt: Int? = a as? Int
- 안전한 캐스팅 연산자는 ' as? ' 이다.
- 캐스팅이 실패하는 경우 null이 할당 됨.
6. Collections of a nullable type
val nullableList: List<Int?> = listOf(1, 2, null, 4)
val intList: List<Int> = nullableList.filterNotNull()
- Collection에 있는 Null 객체를 미리 제거할 수 있는 함수도 제공한다.
- 다음은 List에 있는 null 객체를 filterNotNull 메소드를 이용하여 삭제하는 코드이다.
참고
https://kotlinlang.org/docs/null-safety.html
'프로그래밍 > Kotlin' 카테고리의 다른 글
[ Kotlin ] 코틀린 val , var 이란? 그리고 차이점 (0) | 2021.11.03 |
---|---|
[ Kotlin ] 코틀린(Kotlin) lateinit과 by lazy (0) | 2021.10.26 |
[ Kotlin ] 코틀린 Null 안전성이란? (Null Safety) (1) | 2021.10.25 |