프로그래밍 언어/Java & Kotlin
[kotlin] null safety
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이 뜨게 된다. 이 경우 프로그램이 멈출 수도 있기 때문에 왠만하면 사용하지 않아야 한다.
공부하면서 정리한 내용입니다. 모든 지적 감사히 받겠습니다:)
반응형