Qual è la differenza tra la dichiarazione dei campi all'interno del costruttore e nel corpo principale della data class?
sobes.tech AI
Risposta dell'AI
In Kotlin, i campi dichiarati nel costruttore principale (tra parentesi dopo il nome della classe) diventano automaticamente proprietà della classe con metodi corrispondenti equals(), hashCode(), toString(), e partecipano anche alla destrutturazione.
Esempio:
data class User(val name: String, val age: Int)
Qui, name e age sono proprietà della classe.
Se invece si dichiara un campo all’interno del corpo della classe (ad esempio, nel costruttore o come proprietà normale), non parteciperà ai metodi data class generati automaticamente e non sarà parte della destrutturazione:
data class User(val name: String) {
var age: Int = 0
}
Qui, age è una proprietà normale, non considerata in equals e altri metodi.
Pertanto, dichiarare nel costruttore principale rende il campo parte dei "dati" della classe, mentre dichiararlo all’interno del corpo è semplicemente un’ulteriore proprietà.