본문 바로가기
Android App/Kotlin

null 값에 대한 안정적인 처리(Null Safety)

by AppJinny 2022. 10. 31.

*Null Safety(?, ?., ?:)

-null로 인해 프로그램이나 앱 전체가 멈출 수 있음

-if코드 중 1>2 가 false이기 때문에 one변수는 null값을 가지게 됨

-이 때 null포인터 예외가 발생하면서 프로그램이 다운됨 (안드로이드 스튜디오는 컴파일되지 않게 막아줌)

-하지만 코드 양이 많아지면 이런 많은 상황이 발생되기 때문에 안전장치(Null Safety)를 만듦

--( ? ) : null값 허용(Nullable, 물음표) 

--( ?. ) : 안전한 호출(Safe Call, 물음표와 온점)

--( ?: ) : null값 대체하기(Elvis Operator, 물음표와 콜론)

 

*null값 허용하기(Nullable, 물음표) : ? 

-코틀린은 기본적으로 null값을 허용하지 않음

-null값을 허용하기 위해서는 타입 뒤에 ? 입력

-ull허용 설정 : 변수, 파라미터, 함수 리턴

--변수 null허용 설정 : 변수 선언 시 변수 타입 뒤에 ? 입력하여 null값 허용

변수 null값 허용

 

--함수 파라미터에 null허용 설정 : 함수 파라미터 뒤에 ? 입력한 뒤 함수 내부에서 조건문으로 null인지 아닌지 체크 필수

함수 파라미터 null값 허용

 

--함수 리턴 타입에 null허용 설정 : 함수 리턴타입에 ? 를 붙여 null값 허용

함수 리턴타입 null값 허용

 

 

*안전한 호출(Safe Call, 물음표와 온점) : ?. 

-null체크를 간결하게 할 수 있음

-Nullable인 변수 다음에 ?. 사용 시 해당 변수가 null값일 경우 ?. 다음에 있는 메서드나 프로퍼티를 호출하지 않음

-str변수 자체가 null일 경우 length프로퍼티를 호출하지 않고 바로 null반환

 

*Null값 대체하기(Elvis Operator, 물음표와 콜론) : ?:

-원본 변수가 null일 때 넘겨줄 기본값 설정

-Safe Call(?.)다음에 호출되는 프로퍼티 뒤에 다시 ?: 을 붙이고 기본으로 설정할 값 표시할 때 null값일 경우 표시한 값 반환

-str변수가 null일 경우 가장 뒤에 표시한 값인 0 반환

 

***Null Safety구분하는 법

 


이 포스팅에 작성한 내용은 고돈호, ⌜이것이 안드로이드다⌟, 한빛미디어(주), 2022 에서 발췌하였습니다.