본문 바로가기
개발새발/코틀린

[코틀린/Kotlin] is, as, as?

by 조희우 2025. 9. 3.

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 반환, 예외 미발생