안드로이드 <Kotlin>

[Kotlin] 코틀린 Nullability

TaeGyeong Lee 2023. 4. 16. 00:13

해당 변수가 Null 임을 확인하기 위해 다른 언어는 조건문 등을 통해 null exception을 잡아주어야 합니다. 간단한 소프트웨어 개발에는 크게 문제가 되지 않지만 규모가 커지면서 예외처리를 잡아주기 위한 코드는 배가 됩니다. 코드의 가독성과 효율이 낮아집니다.

이러한 문제를 코틀린에서는 MZ하게 해결합니다.

 

null 가능한 변수 선언 

코틀린에선, 일반적인 변수 선언 후 값으로 null 을 저장할 수 없습니다.

fun main() {
    val name: String = null
}

// 에러 : Null can not be a value of a non-null type String

그러나 ? 연산자를 변수 선언 시 같이 작성하는 경우 null 또한 저장이 가능합니다.

fun main() {
    val name: String? = null    
}

 

? 연산자

? 연산자를 활용하여 해당 변수가 null이 아닌 경우와 null인 경우를 구분하여 코드를 작성할 수 있습니다.

fun main() {
    var name: String? = null
    var name_length = 0
    
   	if(name != null){
        name_length = name.length
    }
    
    println(name_length)
}
// 결과 : 0

 

엘비스 연산자 (Elvis Operator)

https://stackoverflow.com/questions/48253107/what-does-do-in-kotlin-elvis-operator

엘비스 헤어 스타일과 비슷하다고 해서 엘비스 연산자라고 부름 (하하하부장님)

  • <A> ?: <B> 은 <A>가 null일때, <B>값을 반환하는 것 
  • 다시 말해 앞선 객체가 null 이면 무엇을 반환할 지 직접 명시하는 것
  • 따라서 null 반환이 아닌 다른 형식의 반환을 원하는 경우 ?. 보다 용이
  • 조건문 여러 줄을 작성하여 null을 처리하는 것보다 훨씬 간결하게 작성 가능한 이점
  • 이를 통해 에러 처리에 활용할 수도 있음

 

 !! 연산자

  • 코틀린의 세계에선 모든 자료형엔 하위 두 가지 형태가 존재, 하나는 Not Nullable과 Nullable한 형태
  • 그러나 Nullable한 자료형을 Not Nullable한 자료형처럼 사용해야 할 때가 있음
  • 예) 써드파티 라이브러리 사용 시 라이브러리에 Nullable한 자료형을 내 프로그램에서 Not Nullable하게 작성해야 할 경우 
  • 그러나 만일 null이 되는 경우가 발생하면 Exception이 발생하므로 그 목적에 맞게 신중히 사용

 

출처

 

Null safety | Kotlin

 

kotlinlang.org

 

Kotlin Bootcamp for Programmers 2: Kotlin basics  |  Android Developers

Use REPL to learn about basic syntax, data types, variables, operators, control structures, and nullability in Kotlin.

developer.android.com

 

Not-Null Assertion (!!) Operator in Kotlin | Baeldung on Kotlin

Learn how to use the not-null assertion operator in Kotlin

www.baeldung.com