kotlin 변수에 null 할당하기

Kotlin DEVELOPMENT

kotlin은 기본적으로 NPE free하게 설계가 되어서 변수에 null을 할당할 수 없다.

val name: String = null


위와 같이 선언하면 오류가 발생한다.

하지만 null을 허용해야 하는 경우라면?
다음과 같이 자료형에 ?를 붙여주면 해당 변수에 null을 할당할 수 있다.

val name: String? = null

?로 선언한 변수에 null 값이 들어있는 상태에서 해당 변수를 호출하면?
당연하게도 NPE가 발생한다. 이를 방지하기 위해서 safe call이 존재한다.

name.length 를 호출하면 NPE가 발생하지만 name?.length와 같이 호출하면
name에 값이 있다면 length에 접근해서 값을 읽어서 결과를 반환하고, 아무 값이 없으면 그냥 null을 반환한다.

?. (safe call)을 사용하면 null 값을 보다 안전하게 사용할 수 있다.

또한 단정 기호인 !!도 사용할 수 있는데, 이 기호는 프로그래머가 변수에 할당된 값이 null이 아님을 단정하는 기호로써 코딩 시에는 오류가 발생하지 않지만 실행 시에 값이 null이면 NPE를 발생 시킨다.

다른 방법으로는 조건문을 사용하여 변수가 null이 아닐 경우 안전하게 사용하는 방법이 있다.

if(name != null) name.length else -1


위의 경우 null이 아니면 name.length를 반환하고 null일 경우 -1을 반환한다.

safe call과 elvis 연산자를 활용해 null을 허용한 변수를 더 안전하게 사용하려변 다음과 같이 사용하면 된다.

name?.length ?: -1


위의 경우 name이 null이 아니면 ?:의 좌측을, null이면 우측을 반환한다.

댓글 남기기