Tentei fazer o descrito e não obtive sucesso, quando faço o print do size do hashset ele continua retornando 3:
public class TestaHashCodeDeConta {
public static void main(String[] args) {
Set<Conta> contas = new HashSet<Conta>();
Conta conta1 = new ContaPoupanca(100.0);
Conta conta2 = new ContaCorrente(100.0);
Conta conta3 = new ContaCorrente(100.0);
conta1.setNumero(1);
conta2.setNumero(1);
conta3.setNumero(3);
contas.add(conta1);
contas.add(conta2);
contas.add(conta3);
System.out.println(contas.size());
}
}
Métodos hashcode, equals e compareTo da classe Conta:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + numero;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Conta other = (Conta) obj;
if (numero != other.numero)
return false;
return true;
}
@Override
public int compareTo(Conta outraConta) {
return this.nomeDoCliente.compareTo(outraConta.nomeDoCliente);
}