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.