프로젝트에서 Java 17
을 사용하였기에 Java 17
에대해 간단히 정리합니다.
3번째 LTS(Long Term Support)
17은 8과 11에 이은 3번쨰 LTS이다.
Sealed class
- 17에서 정식 추가된 기능이다.
- Super Class의 Sub Class들을 명확히 인지할 수 있도록 해준다.
- 상속하거나 구현할 클래스를 지정해두고 해당 클래스들만 상속 혹은 구현을 허용하는 키워드
public abstract sealed class Shape permits Circle, Rectangle, Square { … }
- 상속/구현하는 클래스는 final, non-sealed, sealed 중 하나로 선언되어야 한다.
- Permitted Subclass들은 동일한 module에 속해야 하며 이름이 지정되지 않은 module에 선언 시에는 동일한 package 내에 속해야 한다.
- Permitted Subclass는 Sealed Class를 직접 확장해야 한다.
참고