BK0625 2025. 5. 6. 11:59
반응형

 

코틀린에서는 변수를 선언할 때 이 변슈가 nullable한 변수인지, non-null, null이 들어갈 수 없는 변수인지 지정을 할 수가 있다 .

 

예를 들어보자.

 

 

var name: String = "test"

name = null // error

var nullableName: String? = 'test'

nullableName = null

 

이렇게 하게 되면 name이라는 변수는 null을 할당할 수 없기 때문에 에러가 나지만 nullableName은 nullable하게 선언했기 때문에 에러가 나지 않는다.

 

또 한 가지 예시를 들어보자.

 

name.length //값이 있는게 확실하기 때문에 에러 안남

nullableName.length //컴파일 에러

 

name 변수는 값이 있는게 확실하기 때문에 name.length를 해도 에러가 나지 않는다. 하지만 nullableName은 변수에 null이 할당될 수 있기 때문에 컴파일 에러가 발생한다.

 

 

이를 해결할 수 있는 방법은 다음 4가지 방법이 있다

 

 

1. 조건문을 통해 null 확인하기

if(nullableName != null) {
	println(nullableName.length)
}

 

이렇게 고전적인 방법으로 직접 null이 아닌지 조건문으로 확인하는 방법이 있다.

 

 

2. ?. 연산자를 통해서 안전하게 호출

println(nullableName?.length)

 

 

3. ?: 엘비스 연산자

 

val length = nullableName?.length?:0

println(length)

 

이렇게 하면 nullableName이 null 일 때 ?: 뒤에 있는 0이 length 변수에 할당되게 된다.

 

 

4.!!

nullableName!!.length

 

null이 절대 아님을 개발자가 지정하는 방식이다. 이 방식은 큰 문제를 야기할 수 있기 때문에 권장되는 방법은 아니다. 변수가 null일 시 컴파일 에러는 안 뜨는데 실행을 하게 되면 exception이 뜨게 된다. 이 경우 프로그램이 멈출 수도 있기 때문에 왠만하면 사용하지 않아야 한다.

 

 

 

공부하면서 정리한 내용입니다. 모든 지적 감사히 받겠습니다:)

 

 

 

반응형