Sobes.tech
Junior — Middle

Wat is het verschil tussen het declareren van velden binnen de constructor en in de hoofdtekst van een data class?

sobes.tech AI

Antwoord van AI

In Kotlin worden velden die in de hoofdconstructor (tussen haakjes na de naam van de klasse) worden gedeclareerd, automatisch eigenschappen van de klasse met bijbehorende methoden equals(), hashCode(), toString(), en nemen ook deel aan destructurering.

Voorbeeld:

data class User(val name: String, val age: Int)

Hier zijn name en age eigenschappen van de klasse.

Als je echter een veld binnen de klasse body declareert (bijvoorbeeld in de constructor of als gewone eigenschap), zal het niet deelnemen aan de automatisch gegenereerde data class methoden en niet deel uitmaken van destructurering:

data class User(val name: String) {
    var age: Int = 0
}

Hier is age een gewone eigenschap, niet meegenomen in equals en andere methoden.

Dus, het declareren in de hoofdconstructor maakt het veld onderdeel van de "gegevens" van de klasse, terwijl het declareren binnen de body slechts een extra eigenschap is.