[Kotlin] Null Safety

강승구·2022년 12월 28일
0

코틀린은 자바보다 null에 대한 좀 더 세밀한 안정적인 처리가 가능한데, 이것을 Null Safety라고 한다.
코틀린의 Null Safety를 통해 NullPointerException이 생기는 것을 방지할 수 있다.

Nullable

nullable은 변수에 null을 허용하겠다는 의미이다.

? 연산자

코틀린에서는 기본적으로 변수를 선언할 때 다른 언어와 달리 초기값을 null로 하는 것이 불가능하다.
그러므로 변수에 null을 저장하고 싶다면 즉, null을 허용하고 싶다면 변수의 타입 뒤에 물음표를 추가해야 한다.

val number1 : Int = null //NPE error 발생
val number2 : Int? = null

!! 연산자

!! 연산자는 null이 아님을 개발자가 보장한다.
하지만 이는 신중하게 사용해야한다.

button!!.setOnClickListener{

}

safe call

만약 어떤 변수에 null값이 들어있는데 해당 변수의 프로퍼티나 메서드를 호출하면 NullPointerException이 발생하게 된다. 그러므로 오류를 막기 위해 변수가 Nullable이면 조건문을 이용하여 null이 아닌지를 체크해야한다.

button이 null이 아니면 setOnClickListener 메소드를 호출하는 조건문

if(button. != null){
   button.setOnClickListener
}

하지만 Safe Call을 이용하면 변수가 null이면 프로퍼티나 메서드를 호출하지 않기 때문에 null 여부를 확인하는 조건문을 사용할 필요가 없다.

foo?.bar()

foo가 null이면 bar() 메서드가 호출되지 않는다.
foo가 null이 아니면 bar() 메서드를 정상 실행하고 결과값을 얻어온다.


엘비스 연산자

엘비스 연산자를 사용하면 null을 반환하는 대신 다른 기본값을 반환하도록 설정할 수 있다.

fun main(){
    val number4 = number2 ?: 10
    print(number4) //number2가 null이기 때문에 10반환
}
profile
강승구

0개의 댓글