Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Contas iguais.

Durante a aula criamos duas referências cc2 e cc3 com mesma agência e numero de conta. Pela regra de negócio definimos que são a mesma conta. No entanto cc2 e cc3 ainda são duas referências distintas que apenas referem-se a objetos com atributos iguais.

Não seria mais interessante que para um novo objeto criado, caso o numero e agencias fossem iguai eu fizesse cc2 = cc3, para que eu tenha então duas referências para o mesmo objeto e não dois objetos com o mesmo valor de atributo?

4 respostas

Olá José, tudo bem com você?

Neste exemplo que você deu realmente faz mais sentido, a gente igualar as referências para utilizar apenas 1 objeto

Mas normalmente iremos utilizar o equals para fazer comparações que não temos muito controle, então suponha que temos um programa que recebe dados (seja da internet, ou pelo terminal) e ele vai salvando esses elementos numa lista

Desta forma se não queremos ter dados repetidos, podemos utilizar o contains, e caso exista podemos lançar um erro, ou dar uma mensagem de aviso para o usuário

Então neste caso, a lógica é um pouco diferente, caso seja igual, eu não pretendo igualar, pretendo que esse objeto que eu criei com os dados do usuário nem seja utilizado :)

Você vai ver ao longo dos cursos que a maioria das utilizações do equals é justamente para evitar criar uma segunda referência, e para criar uma barreira de proteção para os nossos programas!

Não é comum criar objetos iguais dessa forma, apenas uma maneira que o instrutor enxergou para conseguir contemplar esse método tão importante que é o equals

Conseguiu Compreender?

Abraços e Bons Estudos!

Acho que entendi. Então nesse caso, como eu quero evitar dados repetidos faz sentido usar o equals para comparar os atributos dos objetos (que são os dados) e não apenas se as referencias são iguais.

Então eu faço o @override do equals implementando a logica de acordo com a regra do negocio e uso o contains para impedir a criação do objeto com dados repetidos. Seria isso?

solução!

Isso mesmo!!

Na maioria das vezes iremos fazer o @Override no equals para aplicar a nossa regra de negócio de verificação, muitas vezes podemos ter um parâmetro único como int id que queremos checar se é igual ou String email, e desta forma conseguimos impedir a adição utilizando o contains :)

Após os cursos básicos de Java, o de Coleções, nos mostra bastante do poder que temos com eles!

Abraços =D

Me esclareceu agora. Então no caso da conta faz sentido também. Eu impeço a instanciação de uma nova conta com mesmo numero e agencia.

Muito obrigado pela ajuda, Geovani. Um abraço !!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software