(Kotlin/코틀린) 스마트 캐스팅(Smart Casting)과 메인 스레드(Thread) 관련 주의사항 정리

개요


1. Kotlin Smart Cast란?

Smart Cast는 Kotlin 컴파일러가 타입을 자동으로 캐스팅하는 기능입니다.


2. Smart Cast가 실패하는 경우

다음 코드에서는 Smart Cast가 동작하지 않습니다.

var name: String? = "Android"

if (name != null) {
    doSomething()
    println(name.length)
}

3. 왜 컴파일러가 Smart Cast를 막는가?

Kotlin은 다음 상황을 고려합니다.


4. Android 메인 스레드에서도 발생하는 이유

Android 코드에서도 이런 문제가 발생합니다.


5. Samrt Cast 가능 조건

조건 가능 여부
val 변수 가능
var 변수 제한
지역 변수 가능
클래스 property 제한

6. 가장 많이 사용하는 해결 방법


7. Coroutine 환경에서 Smart Cast 문제

코루틴에서는 더 자주 발생합니다.

var user: User? = repository.getUser()

if (user != null) {

launch {
    println(user.name)
  }
}
val safeUser = user

if (safeUser != null) {
    launch {
        println(safeUser.name)
    }
}

8. Smart Cast 내부 동작



Related Posts