Sobes.tech
Назад к вопросам
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 класс облегчает работу с данными.