Sobes.tech
Back to questions
Junior — Middle
63

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

Companies where asked
Магнит Тех

Answer from AI

sobes.tech AI

В 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.