Допустимо ли применять модификатор sealed для объявления data class в Kotlin?

В Kotlin нельзя объявлять data class с модификатором sealed.

Короткий ответ

Что ответить на собеседовании

В Kotlin нельзя объявлять data class с модификатором sealed.

Подробный разбор

Ответ с пояснениями

В Kotlin нельзя объявлять data class с модификатором sealed.

Причина в том, что sealed классы предназначены для ограничения иерархии наследования — все подклассы должны быть объявлены в том же файле. Data class же предназначены для хранения данных с автоматически сгенерированными методами (equals, hashCode, toString и т.д.).

Комбинация sealed и data class не поддерживается, так как sealed класс не может быть data class, но его подклассы могут быть data class.

Пример:

sealed class Result

data class Success(val data: String) : Result()
data class Error(val error: Throwable) : Result()

Здесь sealed класс Result ограничивает наследование, а его подклассы — data class.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку