Junior
Na co se používají konstruktory ve třídě dat a je možné se bez nich obejít?
sobes.tech AI
Odpověď od AI
V datové třídě se konstruktor používá k inicializaci jejích vlastností při vytváření objektu. Je automaticky generován kompilátorem na základě vlastností uvedených v hlavním konstruktoru v závorkách za názvem třídy.
Je možné a doporučené se vyhnout explicitní definici konstruktoru, protože kompilátor sám vytvoří:
- Hlavní konstruktor
(val/var vlastnost1: Typ1, val/var vlastnost2: Typ2, ...) - Metody
equals(),hashCode(),toString() - Metodu
copy() - Metody
componentN()pro destrukturalizaci
Příklad:
// Třída dat s automaticky generovaným konstruktor
data class User(val jméno: String, val věk: Int)
// Vytvoření objektu
val user = User("Alice", 30)
Není třeba psát konstruktor ručně, pokud není potřeba sekundární konstruktor s jinou logikou inicializace nebo výchozími vlastnostmi, což je v data class vzácné, protože jejím hlavním účelem je jednoduché ukládání dat. I výchozí vlastnosti lze uvést v hlavním konstruktoru:
// Třída dat s výchozí vlastností
data class Product(val id: Int, val jméno: String, val cena: Double = 0.0)
Tudíž konstruktor v data class je vždy, ale jeho definice je ve většině případů převzata kompilátorem.