Care este diferența dintre declararea câmpurilor în interiorul constructorului și în corpul principal al unei clase de date?
sobes.tech AI
Răspuns de la AI
În Kotlin, câmpurile declarate în constructorul principal (între paranteze după numele clasei) devin automat proprietățile clasei cu metodele corespunzătoare equals(), hashCode(), toString(), și participă, de asemenea, la destrukturare.
Exemplu:
data class User(val name: String, val age: Int)
Aici, name și age sunt proprietățile clasei.
Dacă, în schimb, declarați un câmp în interiorul corpului clasei (de exemplu, în constructor sau ca proprietate obișnuită), acesta nu va participa la metodele data class generate automat și nu va face parte din destrukturare:
data class User(val name: String) {
var age: Int = 0
}
Aici, age este o proprietate obișnuită, neconsiderată în equals și alte metode.
Prin urmare, declararea în constructorul principal face ca câmpul să fie parte a "datelor" clasei, în timp ce declararea în corpul clasei este doar o proprietate suplimentară.