스마트 캐스트는 널 가능성에만 제한되지 않는다. 8장 클래스 계층 이해하기에서는 클래스 계층 구조 안에서 스마트 캐스트를 통해 안전한 타입 캐스팅을 수행하는 방법을 살펴본다.
IDE 팁 ≡
인텔리J 플러그인은 스마트 캐스트에 의해 영향을 받는 변수를 특별히 강조해준다. 이로 인해 여러분이 코드를 볼 때 이런 변수를 쉽게 구별할 수 있다. 그리고 참조 툴팁(tooltip)에서는 스마트 캐스트에 의해 세분화된 타입을 보여주기까지 한다(그림 4-2).
▲ 그림 4-2 스마트 캐스트 강조
스마트 캐스트는 when이나 루프 같은 조건 검사가 들어가는 다른 문이나 식 안에서도 작동한다.
fun describeNumber(n: Int?) = when (n) {
null -> "null"
// 아래에 있는 가지에서 n은 널이 될 수 없다
in 0..10 -> "small"
in 11..100 -> "large"
else -> "out of range"
}