Sobes.tech
Middle

Quelles sont les différences entre les classes de données et les classes scellées en Kotlin?

sobes.tech IA

Réponse de l'IA

Data-классы в Kotlin предназначены для хранения данных. Они автоматически генерируют полезные методы, такие как equals(), hashCode(), toString(), copy() и componentN().

Sealed-классы используются для представления ограниченной иерархии классов. Все подклассы sealed-класса должны быть объявлены в том же файле. Это позволяет компилятору проверить все возможные подтипы при использовании выражений when, обеспечивая исчерпывающую обработку (exhaustive when).

Основные различия:

Признак Data-класс Sealed-класс
Назначение Хранение данных Ограниченная иерархия классов
Методы Автоматически генерируются Не генерируются автоматически
Подклассы Могут быть где угодно Ограничены тем же файлом
Использование Как POJO (Plain Old Java Object) Для представления конечного числа состояний
Абстрактность Не могут быть abstract Могут быть abstract

Пример data-класса:

data class User(val name: String, val age: Int)

Пример sealed-класса:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val code: Int, val message: String) : Result()
    object Loading : Result() // Объект как подтип
}