은 이 문제를 해결하지만, 우리가 연산을 추가할 때 수많은 클래스를 변경하는 게 지겨워서 이
해법을 우회했버렸다.
코틀린에서도 타입 검사와 다운캐스팅이 가능하며, 위험과 부가비용도 똑같다. 하지만 코틀린
에는 클래스를 조직화하고 런타입 타입 검사를 더 안전하고 편리하게 해 주는 기능인
봉인된
클래스
가 있다. 봉인된 클래스는 직접적인 하위 클래스가 고정되어 있는 추상 클래스다. 우리
는 봉인된 클래스 하위 클래스를 같은 컴파일 유닛과 패키지 안에 정의해야 한다. 이런 제한으
로 인해 코틀린 봉인된 클래스에 대한 실행 시점 타입 검사에는 자바의 실행 시점 타입 검사과
같은 문제가 없다. 정적 타입 검사기는
when
식이 수행하는 봉인된 클래스의 하위 타입에 대
한 실행 시점 타입 검사가 모든 경우를 처리하고 그외의 경우를 처리하지 않는다는 점을 보장
한다.
WARNING
_
when
문은 모든 경우를 처리하는지 검사하진 않는다
컴파일러는
when
식이 모든 경우를 검토하는지 검사하지만
when
문을 검사하지는 않는다. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.