어떤 참조가 null이 될 수 없다는 사실을
특별히 알 수 있는 경우가 있다?
오늘의 아톰은 널이 될 수 있는 타입을 처리할 수 있는 두번째 접근 방법 중 하나로,
지난 아톰에서 잠시 언급했던 !!를 이야기 하는 아톰이다.
[ 널 아님 단언 ]
널 아님 단언
: null이 될 수 없다고 주장하기 위해 느낌표 두 개(!!)를 사용
: x!! - x가 null이 아니라는 것을 보장하며, null이 아니라면 x를, null이라면 오류 발생
: 일반적으로는 !!를 그냥 쓰는 것이 아닌 역참조와 함께 사용 (.!!로 사용)
: 널 아님 단언을 사용하지 않고 안전한 호출이나 명시적인 null 검사를 활용하는 것을 권장
: 널 아님 단언을 자주 사용하는 경우 언급하는 적절한 단언과 함께 함수를 분리하는 것이 좋음
import atomictest.*
fun main() {
var x: String?= "abc"
x!! eq "abc"
x!!.length eq 3 // 역참조와 함께 사용
x = null
capture {
val s: String = x!!
} eq "NullPointerException"
)
* 자바와 상호작용 할 때 활용할 수 있는 더 나은 방법은 추후에 알아볼 예정이다.
'공부 자료 > 코틀린[Kotlin]' 카테고리의 다른 글
[Atomic 41] 제네릭스 소개 (0) | 2024.02.21 |
---|---|
[Atomic 40] 확장 함수와 널이 될 수 있는 타입(라이브러리 함수) (0) | 2024.02.20 |
[Atomic 38] 안전한 호출과 엘비스 연산자 (0) | 2024.02.13 |
[Atomic 37] 널이 될 수 있는 타입 (0) | 2024.02.13 |
[Atomic 36] 구조 분해 선언 (1) | 2024.02.08 |