코틀린 언랩핑(unwrapping) 예제
코틀린에서 null 값을 처리하기 위해 안전 호출 연산자(?.)를 사용하는 것은 기본적인 방법이지만, 경우에 따라 null이 아닌 값을 확실히 얻어야 할 때가 있습니다. 이때 사용하는 것이 언랩핑입니다. 언랩핑은 null 가능성을 제거하고 null이 아닌 값을 추출하는 기술입니다.
다음은 코틀린에서 언랩핑을 수행하는 다양한 방법과 예제입니다.
1. 안전 호출 연산자와 let 함수
안전 호출 연산자(?.)는 객체가 null이 아닌 경우에만 해당 객체의 메서드나 프로퍼티에 접근합니다. let 함수와 함께 사용하면 null이 아닌 경우에만 특정 블록을 실행할 수 있습니다.
val name: String? = "John"
name?.let {
println("이름은 ${it}입니다.") // name이 null이 아니므로 실행됨
}
val age: Int? = null
age?.let {
println("나이는 ${it}입니다.") // age가 null이므로 실행되지 않음
}
2. 엘비스 연산자(?:)
엘비스 연산자는 좌변 값이 null인 경우, 우변 값을 반환합니다. null 값을 처리하기 위한 기본값을 설정할 때 유용합니다.
val name: String? = null
val displayName = name ?: "알 수 없음"
println(displayName) // 출력: 알 수 없음
val age: Int? = 30
val displayAge = age ?: 0
println(displayAge) // 출력: 30
3. !! 연산자
!! 연산자는 null 가능한 값을 강제로 언랩핑합니다.
값이 null인 경우 NullPointerException이 발생하므로 주의해서 사용해야 합니다.
val name: String? = "John"
val length = name!!.length // name이 null이 아니므로 정상 실행
println(length) // 출력: 4
val age: Int? = null
val result = age!! + 10 // age가 null이므로 NullPointerException 발생
4. as 연산자
as 연산자는 타입 캐스팅을 수행합니다.
null이 아닌 값으로 캐스팅할 때 사용할 수 있지만, null인 경우 TypeCastException이 발생합니다.
val value: Any? = "Hello"
val stringValue = value as String // value가 String 타입이므로 정상 실행
println(stringValue) // 출력: Hello
val number: Any? = null
val intValue = number as Int // number가 null이므로 TypeCastException 발생
주의 사항:
- 언랩핑은 null 값을 처리하는 좋은 방법이지만, NullPointerException 같은 예외가 발생할 수 있으므로 주의합니다.
- 가능하면 안전 호출 연산자와 엘비스 연산자를 사용하여 null 값을 안전하게 처리하는 것이 좋습니다.
- !! 연산자는 null 값이 발생하지 않을 것이 확실한 경우에만 사용합니다.
언랩핑을 사용할 때는 항상 null 가능성을 고려하고 적절한 예외 처리를 구현해야 합니다.
반응형
'Kotlin' 카테고리의 다른 글
코틀린 forEach, forEachIndexed 반복문 예제 (0) | 2025.02.01 |
---|---|
코틀린 배열 예제 (0) | 2025.02.01 |
코틀린 조건 처리문 예제 (0) | 2025.02.01 |
코틀린 변수와 상수 예제 (0) | 2025.02.01 |
코틀린 기본 문법 동영상 (0) | 2025.02.01 |