Назад к вопросам
Junior — Middle
75
Чем отличается использование Sealed Interface от Enum в Java?
Компании, где спрашивали
Effective Technologies
Ответ от нейросети
sobes.tech AI
Sealed Interface и Enum в Java служат для разных целей, хотя оба ограничивают набор допустимых реализаций.
-
Enum — это специальный тип, который представляет фиксированный набор констант. Он идеально подходит, когда нужно определить ограниченный список значений, например, дни недели или состояния.
- Все значения перечислены в одном месте.
- Enum автоматически поддерживает методы, например,
values(),valueOf(). - Не поддерживает наследование (нельзя расширять enum).
-
Sealed Interface (или Sealed Class) — это механизм ограничения иерархии наследования. Он позволяет явно указать, какие классы могут реализовывать интерфейс или наследовать класс.
- Позволяет создавать более гибкие и расширяемые иерархии.
- Можно иметь разные реализации с разной логикой.
- Используется для контроля над расширяемостью, например, в паттернах проектирования.
Пример:
sealed interface Shape permits Circle, Rectangle {}
final class Circle implements Shape {
double radius;
}
final class Rectangle implements Shape {
double width, height;
}
Таким образом, Enum — это фиксированный набор значений, а Sealed Interface — способ контролировать, кто может реализовывать интерфейс, сохраняя при этом гибкость реализации.