Kam skirti konstruktoriai duomenų klasėje ir ar įmanoma be jų apsieiti?
sobes.tech AI
Atsakymas iš AI
Duomenų klasėje, konstruktorius naudojamas jos savybių inicijavimui kuriant objektą. Jis automatiškai sugeneruojamas kompiliatoriaus pagal pagrindinį konstruktorių, nurodytą skliaustuose po klasės pavadinimu.
Rekomenduojama ir būtina vengti tiesioginės konstruktoriaus apibrėžimo, nes kompiliatorius pats sukuria:
- Pagrindinį konstruktorių
(val/var savybė1: Tipas1, val/var savybė2: Tipas2, ...) - Metodus
equals(),hashCode(),toString() copy()metodącomponentN()metodus destruktūrizacijai
Pavyzdys:
// Automatiškai sugeneruoto konstruktoriaus duomenų klasė
data class User(val name: String, val age: Int)
// Objekto kūrimas
val user = User("Alice", 30)
Nereikia rašyti konstruktoriaus rankiniu būdu, išskyrus, jei reikalingas antrinis konstruktorius su kita inicializacijos logika ar numatytaisiais parametrais, kas yra retas atvejis data class, nes jos pagrindinis tikslas — paprastas duomenų saugojimas. Net ir numatytosios savybės gali būti nurodytos pagrindiniame konstruktoriuje:
// Duomenų klasė su numatyta savybe
data class Product(val id: Int, val name: String, val price: Double = 0.0)
Taigi, konstruktorius data class visada yra, tačiau jo apibrėžimas daugeliu atvejų yra perimamas iš kompiliatoriaus.