Они позволяют явно контролировать, какие классы могут расширять или реализовывать тип — делая иерархии безопаснее, легче в сопровождении и идеально подходящими для исчерпывающего pattern matching'а
Начиная с Java 17, были введены sealed-классы и sealed-интерфейсы как способ ограничить и контролировать иерархию наследования.
Как это работает?
🔹Используй модификатор
sealed и ключевое слово permits, чтобы явно указать разрешённые подклассы или реализации.🔹Все разрешённые подтипы должны находиться в одном модуле или пакете и обязаны быть помечены как
final, sealed или non-sealedЗачем использовать sealed-классы и интерфейсы?
👉 Более строгая инкапсуляция и контроль над публичным API
👉 Безопасный и предсказуемый код (отлично подходит для pattern matching в
switch)👉 Защита от нежелательного наследования или реализации
👉 Java Portal
