본문 바로가기

공부 자료/코틀린[Kotlin]

[Atomic 39] 널 아님 단언

어떤 참조가 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"
)

 

 

* 자바와 상호작용 할 때 활용할 수 있는 더 나은 방법은 추후에 알아볼 예정이다.