Sobes.tech
Back to questions
Junior — Middle
76

Чем отличается использование Sealed Interface от Enum в Java?

Companies where asked
Effective Technologies

Answer from AI

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 — способ контролировать, кто может реализовывать интерфейс, сохраняя при этом гибкость реализации.