프로그래밍/Kotlin

[ Kotlin ] 코틀린(Kotlin)에서 Null 을 안전하게 처리하는 방법

리신 2021. 10. 26. 03:39
반응형

코틀린 Null 안전성이란?

2021.10.25 - [프로그래밍/Kotlin] - [ Kotlin ] 코틀린 Null 안전성이란? (Null Safety)

 

[ Kotlin ] 코틀린 Null 안전성이란? (Null Safety)

코틀린 Null 안전성이란?  자바와 다르게 코틀린은 Nullable과 Non-Null 타입으로 프로퍼티를 선언할 수 있다! 즉,  코틀린은 기본적으로 값이 null 아니고 NotNull이다. 🙄❔❓왜 기본적으로 값이 Null

dev-cini.tistory.com

위 링크를 타고 들어가면 코틀린 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

 

Null safety | Kotlin

 

kotlinlang.org

 

 

 

반응형