상세 컨텐츠

본문 제목

Kotlin Null 체크(? / ?: / !!)

안드로이드/basic

by 개발혱 2021. 3. 5. 15:16

본문

Kotlin Null 체크

1 단계 : Null 허용 여부 알아보기

기본적으로 Int는 null을 할당 할 수 없다.

var rocks: Int = null

→ error: null can not be a value of a non-null type Int

? 연산자를 사용한다면 null을 선언 할 수 있습니다.

var marbles: Int? = null

List와 같은 복잡한 데이터 유형이 있는 경우:

  • List의 요소가 널이되도록 허용 할 수 있습니다.
  • List이 null이 되도록 허용 할 수 있지만 null이 아닌 경우 해당 요소는 null일 수 없습니다.
  • List 또는 요소 모두 널이되도록 허용 할 수 있습니다.

2단계 : ?와 ?: 연산자에 대해서 배우기

기존 null 체크 코드

var fishFoodTreats = 6 
if(finishFoodTreats != null) {
	finishFoodTreats = finishFoodTreats.desc() 
}

? 연산자를 이용한 null 체크

var fishFoodTreats = 6 
fishFoodTreats = fishFoodTreats?.desc()

?: 연산자를 사용하여 null 테스트를 연결할 수 있습니다.

fishFoodTreats = fishFoodTreats?.desc() ?: 0

if finishFoodTreats is not null 이면 감소하고 사용합니다. 그렇지 않으면 뒤에 있는 값인 ?: 0 을 사용하십시오.

참고: ?: 연산자는 Elvis Presley가 머리에 스타일을 적용한 방식 인 퐁파두르 헤어 스타일이 있는 옆구리에 웃는 얼굴과 같기 떄문에 "Evis operator"라고도 합니다.

3단계 : !!연산자 배우기

NullPointerExceptions을 정말 좋아한다면 null이 아닌 어설 션 연산자 !!(double-bang or bang bang)은 모든 값을 null이 아닌 유형으로 변환하고 예외를 throw합니다.

val len = s!!.length // throws NullPointerException if s is null

가능하면 !!연산자는 사용하지 않는게 좋습니다. 때로는 Java레거시 다룰 때 더블 뱅이 필요합니다.

실무에 적용할 때?

  • API 연동하는 model 만들 땐 서버에서 null을 줄 수 있기 때문에 가능하면 null처리 해야겠다.

참고자료

관련글 더보기