¿En qué se diferencia la declaración de campos dentro del constructor y en el cuerpo principal de la data class?
sobes.tech AI
Respuesta de la IA
En Kotlin, los campos declarados en el constructor principal (entre paréntesis después del nombre de la clase) se convierten automáticamente en propiedades de la clase con métodos correspondientes equals(), hashCode(), toString(), y también participan en la destructuración.
Ejemplo:
data class User(val name: String, val age: Int)
Aquí, name y age son propiedades de la clase.
Si en cambio se declara un campo dentro del cuerpo de la clase (por ejemplo, dentro del constructor o como una propiedad normal), no participará en los métodos data class generados automáticamente y no formará parte de la destructuración:
data class User(val name: String) {
var age: Int = 0
}
Aquí, age es una propiedad normal, no considerada en equals y otros métodos.
Por lo tanto, declarar en el constructor principal hace que el campo sea parte de los "datos" de la clase, mientras que declararlo dentro del cuerpo es simplemente una propiedad adicional.