Назад к вопросам
Junior
96
questionbank

Как реализовать и использовать data-классы в Kotlin?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

Реализация: объявление класса с префиксом data.

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

Использование:

Создание экземпляра:

val user = User("Alice", 30)

Доступ к свойствам:

val name = user.name // Alice
val age = user.age   // 30

Использование сгенерированных методов:

println(user.toString()) // User(name=Alice, age=30)

val anotherUser = User("Alice", 30)
println(user == anotherUser) // true (equals() сгенерирован)

val olderUser = user.copy(age = 31) // User(name=Alice, age=31)

val (userName, userAge) = user // Деструктуризация
println("Name: $userName, Age: $userAge") // Name: Alice, Age: 30

Особенности:

  • Все первичные конструкторные параметры должны быть либо val, либо var.
  • Data-классы не могут быть abstract, open, sealed или inner.
  • Свойства из тела класса не участвуют в генерации методов (equals, hashCode, copy, componentN).
data class Person(val name: String) {
    var height: Int = 0 // Не участвует в equals/hashCode/copy/componentN
}

val p1 = Person("Bob")
p1.height = 180
val p2 = Person("Bob")
p2.height = 190
println(p1 == p2) // true