Junior
Kako funkcionišu data klase u Kotlinu?
sobes.tech АИ
Одговор од АИ
Data klase u Kotlinu se koriste za skladištenje podataka. Kompajler automatski generiše standardne metode:
equals(): Upoređuje instance na osnovu vrednosti njihovih svojstava.hashCode(): Generiše hash kod na osnovu vrednosti svojstava.toString(): Vraća string reprezentaciju koja uključuje imena i vrednosti svih svojstava.copy(): Kreira kopiju objekta, menjaći ako je potrebno vrednosti navedenih svojstava.componentN(): Metode za destrukturiranje (raspad objekta na pojedina svojstva).
// Primer data klase
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() i destrukturiranje
val (name, age) = user1
println("Ime: $name, Godine: $age") // Ime: Alice, Godine: 30
}
Ključne tačke:
- Sve osobine definisane u glavnom konstruktoru moraju biti
valilivar. - Data klasa ne može biti
abstract,open,sealediliinner. - Data klase mogu naslediti druge klase ili implementirati interfejse.
- Osobine deklarisane van glavnog konstruktora ne učestvuju u generisanju standardnih metoda.
| Metoda | Opis |
|---|---|
equals() |
Upoređuje osobine glavnog konstruktora. |
hashCode() |
Generiše hash na osnovu osobina glavnog konstruktora. |
toString() |
Prikazuje string reprezentaciju osobina glavnog konstruktora. |
copy() |
Kreira površinsku kopiju sa mogućnošću izmene osobina. |
componentN() |
Pristup osobinama u redosledu njihove deklaracije u konstruktoru. |
Data klase znatno pojednostavljuju rad sa POJO (Plain Old Java Object) ili DTO (Data Transfer Object), smanjujući količinu boilerplate koda.