is, as, as?
- 타입 검사 및 타입 캐스팅에 사용하는 키워드
- 클래스 간의 상속/다형성 관계에서 객체의 타입을 확인하거나 변환
is
- 타입 검사 (Type Checking)
- is는 어떤 객체가 특정 타입인지 검사할때 사용
- Instanceof와 유사한 개념
예시
fun printLength(obj: Any) {
if (obj is Str){
println("문자열의 길이: ${obj.length}"}
}else {
println("문자열이 아님")
}
}
- Is로 검사한 후에는 해당 타입으로 스마트 캐스팅
- → obj.length처럼 String의 멤버로 바로 접근 가능
- 스마트 캐스팅
as
- 타입 캐스팅(강제 형변환)
- 명시적으로 타입을 변환(cast)
- 반환값
- 성공시 변환된 객체
- 실패시 ClassCastException
예시
val obj: Any = "Hello"
val str: String = obj as String // 성공
val number: Int = obj as Int // 예외 발생: ClassCastException
as?
- 안전한 캐스팅(Safe Cast)
- 실패할 수도 있는 캐스팅을 null을 반환하는 방식으로 안전하게 처리
예시
val obj: Any = "Hello"
val str: String? = obj as? String // 성공
val number: Int? = obj as? Int // 실패: null 반환, 예외 미발생
'개발새발 > 코틀린' 카테고리의 다른 글
[코틀린/Kotlin] 로컬 클래스(Local Class) (1) | 2025.09.05 |
---|---|
[코틀린/Kotlin] 익명 클래스(Anonymous Class) (0) | 2025.09.04 |
[코틀린/Kotlin] 구체화(reifeid) (0) | 2025.09.02 |
[코틀린/Kotlin] 메모이제이션(Memoization) (0) | 2025.09.02 |
[코틀린/Kotlin] 재귀(Recursion) (1) | 2025.09.01 |