Sobes.tech
Junior

Как да реализираме и използваме data-класове в Kotlin?

sobes.tech AI

Отговор от AI

Класовете за данни се използват за съхраняване на данни. Компилаторът автоматично генерира полезни методи за тях като 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)

другUser = User("Alice", 30)
println(user == anotherUser) // true (генерирано `equals()`)

по-възрастенUser = user.copy(age = 31) // User(name=Alice, age=31)

имеНаПотребителя, възрастНаПотребителя = user // Деструктуриране
println("Име: $имеНаПотребителя, Възраст: $възрастНаПотребителя") // Име: Alice, Възраст: 30

Характеристики:

  • Всички основни конструкторски параметри трябва да бъдат val или var.
  • Данните класове не могат да бъдат 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