Назад к вопросам
Junior — Middle
77
Чем отличается объявление sealed класса от data класса в языке Kotlin?
Компании, где спрашивали
Dion
Ответ от нейросети
sobes.tech AI
sealed class и data class в Kotlin служат разным целям:
-
sealed class — это ограниченный класс, который может иметь фиксированный набор подклассов. Он полезен для моделирования иерархий с ограниченным числом вариантов, например, для выражения состояний или событий. Компилятор знает все подклассы sealed класса, что позволяет использовать when без else.
-
data class — это класс, предназначенный для хранения данных. Он автоматически генерирует методы equals, hashCode, toString, а также copy и componentN функции для удобной работы с данными.
Пример sealed класса:
sealed class Result {
data class Success(val data: String) : Result()
object Loading : Result()
data class Error(val error: Throwable) : Result()
}
Пример data класса:
data class User(val name: String, val age: Int)
Таким образом, sealed класс ограничивает иерархию наследования, а data класс облегчает работу с данными.