PHpullh
학습 라이브러리/Kotlin/스마트 캐스트 (Smart Cast)

KOTLIN · 기초 문법

스마트 캐스트 (Smart Cast)

is 검사 후 컴파일러가 자동으로 타입을 캐스팅합니다. 별도의 명시적 캐스트가 불필요합니다.

기초 문법중급smart-castisaswhen

핵심 설명

is 검사 후 컴파일러가 자동으로 타입을 캐스팅합니다. 별도의 명시적 캐스트가 불필요합니다.

Kotlin code

fun describe(obj: Any): String = when (obj) {
    is String -> "문자열 길이: ${obj.length}"
    is Int    -> "정수의 2배: ${obj * 2}"
    is List<*> -> "리스트 크기: ${obj.size}"
    else       -> "알 수 없는 타입"
}

fun safeCast(value: Any) {
    // as? 안전 캐스트 (실패 시 null)
    val str: String? = value as? String
    println(str?.uppercase() ?: "문자열 아님")

    // 스마트 캐스트 + 조건 결합
    if (value is String && value.length > 5) {
        println("긴 문자열: $value")
    }
}

fun main() {
    println(describe("Hello"))
    println(describe(42))
    safeCast("Kotlin")
}

학습 팁

whenis를 함께 사용하면 패턴 매칭처럼 타입별 분기를 깔끔하게 작성할 수 있습니다.

주의할 점

var 변수는 다른 스레드에서 변경될 수 있어 스마트 캐스트가 적용되지 않습니다. 지역 val로 복사하거나 as를 사용하세요.

자주 묻는 질문

스마트 캐스트 (Smart Cast)란 무엇인가요?

is 검사 후 컴파일러가 자동으로 타입을 캐스팅합니다. 별도의 명시적 캐스트가 불필요합니다.

스마트 캐스트 (Smart Cast) 학습 시 주의할 점은 무엇인가요?

var 변수는 다른 스레드에서 변경될 수 있어 스마트 캐스트가 적용되지 않습니다. 지역 val 로 복사하거나 as 를 사용하세요.