Junior
Чӣ гуна синфҳои маълумот дар Kotlin кор мекунанд?
sobes.tech AI
Ҷавоб аз AI
Датасрещи в Kotlin се използват за съхранение на данни. Компилаторът автоматично генерира стандартни методи:
equals(): Сравнява инстанции въз основа на стойностите на техните свойства.hashCode(): Генерира хеш код въз основа на стойностите на свойствата.toString(): Връща низово представяне, включващо имена и стойности на всички свойства.copy(): Създава копие на обекта, при необходимост променяйки стойностите на посочените свойства.componentN(): Методи за деструктуриране (разлагане на обекта на отделни свойства).
// Пример за дата клас
data class User(val name: String, val age: Int)
fun main() {
val user1 = User("Alice", 30)
val user2 = User("Alice", 30)
val user3 = User("Bob", 25)
// equals()
println(user1 == user2) // true
println(user1 == user3) // false
// toString()
println(user1.toString()) // User(name=Alice, age=30)
// copy()
val user4 = user1.copy(age = 31)
println(user4) // User(name=Alice, age=31)
// componentN() и деструктуриране
val (name, age) = user1
println("Name: $name, Age: $age") // Name: Alice, Age: 30
}
Ключови моменти:
- Всички свойства, дефинирани в основния конструктор, трябва да бъдат или
val, илиvar. - Датата клас не може да бъде
abstract,open,sealedилиinner. - Датите класове могат да наследяват други класове или да реализират интерфейси.
- Свойствата, обявени извън основния конструктор, не участват в генерирането на стандартните методи.
| Метод | Описание |
|---|---|
equals() |
Сравнява свойства от основния конструктор. |
hashCode() |
Генерира хеш въз основа на свойства от основния конструктор. |
toString() |
Извежда низово представяне на свойства от основния конструктор. |
copy() |
Създава повърхностна копия с възможност за промяна на свойства. |
componentN() |
Предоставя достъп до свойства по реда им на обявяване в конструктора. |
Датасрещите значително улесняват работата с POJO (Plain Old Java Object) или DTO (Data Transfer Object), намалявайки бойлерплейт кода.