Boa noite Professor
Você poderia por favor em um exemplo prático, me explicar a funcionalidade dessa anotação?
Obrigado
Att. Marcos Vizine
Boa noite Professor
Você poderia por favor em um exemplo prático, me explicar a funcionalidade dessa anotação?
Obrigado
Att. Marcos Vizine
Olá, Marcos! Como vai?
Entendo que a anotação @EqualsAndHashCode(of = "id") pode parecer um pouco confusa à primeira vista, mas ela é muito útil e eu estou aqui para te ajudar a entender.
Essa anotação é parte da biblioteca Lombok, que é utilizada para reduzir a verbosidade do código em Java, gerando automaticamente métodos que são comumente necessários nas classes, como os métodos equals() e hashCode().
No caso da anotação @EqualsAndHashCode(of = "id"), ela está indicando que os métodos equals() e hashCode() devem ser gerados automaticamente pelo Lombok e que eles devem considerar apenas o atributo "id" da classe para realizar as comparações e cálculos.
Isso é útil, por exemplo, quando temos duas instâncias diferentes da classe Medico, mas que representam o mesmo médico (ou seja, têm o mesmo id). Nesse caso, queremos que elas sejam consideradas iguais. Sem essa anotação, o Java consideraria essas duas instâncias como objetos diferentes, pois por padrão o método equals() compara se as duas referências apontam para o mesmo objeto na memória, e o método hashCode() retorna códigos diferentes para instâncias diferentes.
Vamos a um exemplo prático:
Medico medico1 = new Medico(1L, "Dr. House", "house@email.com", "12345", Especialidade.CARDIOLOGIA, new Endereco(...));
Medico medico2 = new Medico(1L, "Dr. House", "house@email.com", "12345", Especialidade.CARDIOLOGIA, new Endereco(...));
System.out.println(medico1.equals(medico2)); // Com a anotação @EqualsAndHashCode(of = "id"), isso imprimirá "true"
No exemplo acima, mesmo que medico1 e medico2 sejam instâncias diferentes (ou seja, ocupem espaços diferentes na memória), eles são considerados iguais, pois representam o mesmo médico (têm o mesmo id).
Espero ter ajudado e bons estudos!
Entendido. Muito obrigado Professor!!