Sobes.tech
Junior

Para que servem os construtores numa classe de dados e é possível dispensar-se deles?

sobes.tech IA

Resposta da IA

Na classe de dados, o construtor é utilizado para inicializar as suas propriedades ao criar um objeto. Ele é gerado automaticamente pelo compilador com base nas propriedades indicadas no construtor principal entre parênteses após o nome da classe.

Pode e deve evitar-se a definição explícita do construtor, pois o compilador cria automaticamente:

  • O construtor principal (val/var propriedade1: Tipo1, val/var propriedade2: Tipo2, ...)
  • Os métodos equals(), hashCode(), toString()
  • O método copy()
  • Os métodos componentN() para destruição

Exemplo:

// Classe de dados com construtor gerado automaticamente
data class User(val name: String, val age: Int)

// Criação de um objeto
val user = User("Alice", 30)

Não é necessário escrever um construtor manualmente, a menos que seja necessário um construtor secundário com outra lógica de inicialização ou propriedades padrão, o que é raro em data class, pois o seu principal objetivo é simplesmente armazenar dados. Mesmo as propriedades padrão podem ser indicadas no construtor principal:

// Classe de dados com propriedade padrão
data class Product(val id: Int, val name: String, val price: Double = 0.0)

Assim, o construtor em data class existe sempre, mas a sua definição na maioria dos casos é assumida pelo compilador.