1. 코틀린 스마트 캐스팅 소개
- 코틀린의 스마트 캐스팅(Smart Casting)은 개발자의 코드를 더 간결하고 안전하게 만드는 강력한 기능입니다.
- 스마트 캐스팅은 컴파일러가 특정 조건에서 변수의 타입을 자동으로 캐스팅해주는 메커니즘입니다.
- 자바에서는 타입 체크 후 명시적 캐스팅이 필요했지만, 코틀린에서는 이 과정이 자동화되어 있습니다.
1.1 스마트 캐스팅의 기본 개념
- 타입 검사 연산자(
is)를 사용하여 변수의 타입을 확인한 후, 해당 스코프 내에서는 명시적 캐스팅 없이 타입이 변환됩니다. - 컴파일러가 타입 안전성을 보장할 수 있는 상황에서만 스마트 캐스팅이 적용됩니다.
- 스마트 캐스팅은 코드의 가독성을 높이고 타입 관련 오류를 줄이는 데 큰 도움이 됩니다.
1.2 자바와의 비교
- 자바에서 객체 타입을 확인하고 캐스팅하는 코드를 살펴보겠습니다.
if (obj instanceof String) {
String str = (String) obj; // 명시적 캐스팅 필요
System.out.println(str.length());
}
- 코틀린에서는 스마트 캐스팅 덕분에 더 간결하게 작성할 수 있습니다.
if (obj is String) {
// obj가 자동으로 String 타입으로 캐스팅됨
println(obj.length) // 명시적 캐스팅 불필요
}
2. 스마트 캐스팅의 동작 원리
- 코틀린 컴파일러는
is검사를 통해 타입이 확인된 변수를 해당 스코프 내에서 자동으로 캐스팅합니다. - 이는 타입 체크와 캐스팅을 분리하는 자바 방식보다 더 안전하고 간결한 코드를 작성할 수 있게 해줍니다.
- 스마트 캐스팅은 컴파일 시점에 이루어지므로 런타임 오버헤드가 없습니다.
2.1 스마트 캐스팅이 적용되는 상황
is연산자를 사용한 타입 검사 후!is연산자를 사용한 부정 검사의 else 블록 내에서&&,||등의 논리 연산자와 함께 사용될 때- 널 체크 후 (null이 아님이 확인된 경우)