Til. kotlin null safty 안전한 호출 연산자, 엘비스 연산자, null 아님 단언

Devback·2021년 1월 24일
0


NullPointerException은 코틀린으로 개발을 하다보면 흔하게 볼 수 있는 오류이다.

Null이 될 수 있는 값을 안전하게 처리하는 방법

1. 안전한 호출 연산자 ?.

?.은 null 검사와 메서드 호출을 한번의 연산으로 수행한다.

호출하려는 값이 null이 아니라면 ?. 일반 메서드 호출처럼 작동하며, 호출하려는 값이 null이면 이 호출은 무시되고 null이 결과 값이 된다.

s?.toUpperCase()
// 위의 코드는 아래의 코드와 같다. 

if(s != null) s.toUpperCase() else null

2. 엘비스 연산자 ?:

엘비스 연산자는 이항 연산자로 좌항을 계산한 값이 널인지 검사한다. 좌항 값이 null이 아니면 좌항 값을 결과로 하고, 좌항 값이 null이면 우항 값을 결과로 한다.

fun foo(s: String?) {
	val t: String = s ?: "" // s가 null 이면 결과는 ""(빈문자열) 이다. 
}
	

엘비스 연산자를 객체가 null인 경우 null을 반환하는 안전한 호출 연산자와 함께 사용해서 객체가 null인 경우에 대비한 값을 지정하는 경우가 많다.

fun Person.countryName() = company?.address?.country ?: "Unknown"

3. null 아님 단언 !!

널 아닌 단언(not-null assertion)은 null이 될 수 잇는 타입의 값을 null이 될 수 없는 타입으로 강제로 바꿀 수 있다.

fun ignoreNulls(s: String?) {
	val sNotNull : String = s!! // 예외가 발생하는 지점, 아래의 null
	println(sNotNull.length) // 위에 !!가 있는 지점에서 발생한다는 점에 유의해야 한다. 
}
profile
나랑 같이 개발할 사람🖐

0개의 댓글