[Kotlin]Null Safety

한상욱·2023년 10월 24일

Kotlin문법

목록 보기
10/16
post-thumbnail

들어가며

이글은 Kotlin 문법 정리글입니다.

Null

Null이란 무엇인가요? Null은 아무것도 없는 상태입니다. 이러한 데이터값이 절대로 변수나 상수에 대입되지 않을 것 같지만, 수없이 많은 경우가 존재하죠. Null은 절대로 안좋은게 아니에요. 당연히 존재하는거지만, Null로 인해 예외상황을 예측하지 못하여 발생하는 에러가 존재할 수 있다는 것이죠.

Null Safety

우리나라에서는 대기업직군의 백엔드 서비스는 거의 대부분 Spring을 이용해서 개발하고 있습니다. Spring은 Java기반으로 이루어진 백엔드 프레임워크인데요. 최근 몇년전부터는 Java보다 Kotlin을 이용해서 Spring 백엔드가 개발되고 있는 추세에요. 왜냐? 바로바로 Null Safety를 보장하기 때문입니다.

Null Safety를 제공한다는 것은 Null로 발생할 수 있는 여러가지 예외상황들을 방지할 수 있는 아주 어마무시한 기능입니다. 아쉽게도 Java에는 없죠.

fun main() {
    val name = null
    println(name)
}

name이라는 상수는 Null값을 가지고 있습니다. 위 코드에서는 아무런 문제가 없어요. 근데, println이 아니라 어떠한 서비스 알고리즘에 대입된다면 엄청난 에러가 발생하게 되겠죠? 이러한 것을 방지하기 위해서 아래와 같이 Null Safety를 사용할 수 있습니다.

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

이렇게 선언할 경우 Null Check를 뒤의 코드에서 사용할 수 있습니다. 이렇게 하면 Null로 인한 에러를 발생할 수 있겠죠?

강제 타입 변환

Null Safety를 이용해서 생성한 데이터들은 Null Check를 한 후, 사용할 수 있다고 했죠?

fun main() {
    var name : String? = null
    var result : String = ""
    
    if (name != null) result = name

    println(result)
}

이렇게 Null이 아닌지 확인 후 result에 대입할 수 있습니다. 근데, 강제로 Nullable 타입을 변환할수도 있어요.

fun main() {
    var name : String? = null
    var result : String = ""
    
    result = name!!

    println(result)
}

이렇게 Nullable 타입값 뒤에 !!를 두개 붙이면 강제로 타입을 변환할 수 있습니다. Dart에서는 !를 하나만 붙여서 사용했었는데 굉장히 유사한 것 같네요? 뭐가 되었든 강제로 타입변환하는 것은 굉장히 좋지 못한 코딩습관이니 사용할 때 주의가 필요해요.

profile
자기주도적, 지속 성장하는 모바일앱 개발자의 기록

0개의 댓글