Junior — Middle
É possível definir um campo numa data class que seja excluído do cálculo do hashCode?
sobes.tech IA
Resposta da IA
Em Kotlin, todas as propriedades declaradas no construtor primário de uma data class participam por padrão nos métodos equals(), hashCode() e toString().
Para excluir um campo do cálculo de hashCode(), pode declará-lo fora do construtor primário, por exemplo, como var ou val dentro do corpo da classe. Essas propriedades não serão consideradas nos métodos gerados automaticamente.
Exemplo:
data class User(val id: Int, val name: String) {
var tempData: String = "" // não participa em hashCode e equals
}
Aqui, tempData não influencia hashCode() nem equals(), pois não faz parte do construtor primário.
Se precisar de um controlo mais detalhado, pode sobrescrever manualmente os métodos hashCode() e equals().