Sobes.tech
Middle

За какво се използват data класовете и sealed класовете в Kotlin?

sobes.tech AI

Отговор от AI

Класовете данни опростяват създаването на класове, предназначени само за съхранение на данни. Компилаторът автоматично генерира за тях:

  • equals()
  • hashCode()
  • toString()
  • copy()
  • componentN() за деструктуриране
класа данни User(val име: String, val възраст: Int)

// Използване
val user = User("Alice", 30)
println(user) // Показва User(име=Alice, възраст=30)
val user2 = user.copy(възраст = 31)
val (име, възраст) = user // Деструктуриране

Затворените класове (sealed) представляват ограничена йерархия на класове, където всички възможни подкласове са известни по време на компилация. Това позволява използването им в изрази when без блок else, гарантирайки пълна проверка на всички възможности.

затворен клас Result {
    данна клас Success(val данни: String) : Result()
    данна клас Error(val съобщение: String) : Result()
    обект Loading : Result() // Обект, тъй като няма параметри
}

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> println("Успех: ${result.данни}")
        is Result.Error -> println("Грешка: ${result.съобщение}")
        Result.Loading -> println("Зареждане...")
    }
}

Сравнение:

Характеристика Данен клас Затворен клас
Цел Съхранение на данни Ограничена йерархия на класове
Възможности Автоматично генериране на методи Пълна проверка в when
Подкласове Без специфични ограничения Трябва да са в същия файл или модул
Използване Модели на данни, DTO Представяне на състояния, събития, варианти