Olá pessoal. alguém poderia me dar uma ajudinha? chamei o método contains utilizando o ArrayList e também sobescrevendo o método Equals. Contudo agora tudo responde como true.
public abstract class Conta extends Object {
//codigo recortado
//igualdade utilizando contains
@Override
public boolean equals(Object ref) {
Conta outra = (Conta) ref;
if (this.agencia != outra.agencia) {
return false;
}
if (this.numero != outra.numero) {
return false;
}
return true;
}
}
classe teste:
package br.com.bytebank.banco.teste.util;
import java.util.ArrayList;
import br.com.bytebank.banco.modelo.Conta;
import br.com.bytebank.banco.modelo.ContaCorrente;
public class TesteEquals {
public static void main (String []args) {
ArrayList<Conta> lista = new ArrayList<Conta>();
Conta cc1 = new ContaCorrente(98, 15, 1000);
Conta cc2 = new ContaCorrente(16, 54, 1000023);
Conta cc3 = new ContaCorrente(23, 11, 2345);
lista.add(cc1);
lista.add(cc2);
lista.add(cc3);
boolean existe = lista.contains(cc3);
System.out.println(existe);
for (Conta c : lista) {
System.out.println(c);
}
}
}
Como podemos verificar, as contas estão diferentes, número e agencia, mas continua dando true... porém, quando testo com o método equals direto sobrescrito ele funciona apresentando false.