Qual é a diferença entre declarar campos dentro do construtor e no corpo principal de uma data class?
sobes.tech IA
Resposta da IA
No Kotlin, os campos declarados no construtor principal (entre parênteses após o nome da classe) tornam-se automaticamente propriedades da classe com métodos correspondentes equals(), hashCode(), toString(), e também participam na destruturação.
Exemplo:
data class User(val name: String, val age: Int)
Aqui, name e age são propriedades da classe.
Se, por outro lado, declarar um campo dentro do corpo da classe (por exemplo, dentro do construtor ou como uma propriedade normal), ele não participará dos métodos data class gerados automaticamente e não fará parte da destruturação:
data class User(val name: String) {
var age: Int = 0
}
Aqui, age é uma propriedade normal, não considerada em equals e outros métodos.
Portanto, declarar no construtor principal faz o campo fazer parte dos "dados" da classe, enquanto declarar dentro do corpo é apenas uma propriedade adicional.