더북(TheBook)

스마트 캐스트는 널 가능성에만 제한되지 않는다. 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"
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.