**Java sealed 타입의 함정 - 새 하위 타입이 기존 코드를 깨뜨릴 수 있다**

- Java의 sealed 클래스와 인터페이스는 허용할 하위 타입을 제한해, 컴파일러가 `switch`에서 모든 경우를 처리했는지 검사할 수 있게 함  
- 모든 타입을 처리하면 `default` 분기 없이 작성할 수 있고, 빠뜨린 타입이 있으면 컴파일 오류가 발생. 하지만 이 검사는 사용 코드를 컴파일할 때만 작동  
- 공개 API의 sealed 타입에 새 하위 타입을 추가하면 기존 `switch`가 재컴파일에 실패할 수 있음. SemVer를 따른다면 메이저 버전을 올려야 하는 호환성 파괴 변경  
- 라이브러리만 갱신하고 기존 사용 코드를 그대로 실행하면 …

[https://news.hada.io/topic?id=35598](https://news.hada.io/topic?id=35598)