Можно ли использовать модификатор sealed с data class

«Можно ли использовать модификатор sealed с data class» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно. sealed и data — это независимые модификаторы, которые можно комбинировать.

sealed interface Result
data class Success(val data: String) : Result
data class Error(val message: String) : Result

Особенности:

  • sealed ограничивает иерархию наследования (все наследники должны быть в том же файле/модуле).
  • data автоматически генерирует equals(), hashCode(), toString() и copy().
  • Комбинация полезна для моделирования закрытых типов с удобным API (например, результаты операций).

Ограничение: data class не может быть abstract, open, inner или sealed напрямую (но может наследовать от sealed типа).