티스토리 뷰

Kotlin

[Kotlin] null을 대하는 자세

hyuuny 2022. 5. 28. 12:57

Safe Call

null이 아니면 실행하고, null이면 실행하지 않는다.(그대로 null)

str 변수에 "ABC"를 대입했지만, 실제로는 null이 들어갈 수도 있는 변수이기 때문에 str.length처럼 .으로 바로 호출할 수 없다. 이때 ?.(Safe Call)을 사용하면 호출이 가능해진다.


?.의 의미는 앞에 있는 변수가 null이 아니면 뒤의 함수나 프로퍼티 등을 실행시키고, null이면 값 그대로 null이 된다.


실제로 null이 들어갈 수 있는 변수를 ?.를 사용하지 않고, 실행해보면 Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String? 메시지가 출력된다.


Elvis 연산자

앞의 연산 결과가 null이면 ?: 뒤의 값을 사용한다.

str 변수에 "ABC"가 대입되어 있으므로 3이 되겠지만, null이면 앞의 연산 결과가 null이 되기 때문에 결과는 0이 된다.


아래는 Elvis 연산자를 사용해서 null이면 예외를 던지고 null이 아니면 값을 반환하도록 선언한 메서드이다.

fun startsWith(str: String?): Boolean {
    return str?.startsWith("A") ?: throw IllegalArgumentException("null 예외")
}

main 함수를 통해 startsWith 메서드를 호출하면 예상한대로 결과가 잘 나오는 것을 확인할 수 있다.

fun main() {
    val str: String? = null
    println(startsWith(str))
}

'Kotlin' 카테고리의 다른 글

[Kotlin] 클래스  (0) 2022.06.17
[Kotlin] object 키워드  (0) 2022.06.14
[Kotlin] 접근 제한자(Visibility Modifier)  (0) 2022.06.07
[Kotlin] 예외를 처리하는 방법  (0) 2022.06.02
[Kotlin] 반복문  (0) 2022.06.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함