Rodei o programa de teste, sem erros mas o size do objeto contas sempre fica 1. Qual o problema como meu código?
public abstract class Conta {
protected double saldo;
private int numero;
private String nome;
@Override
public String toString() {
return "esse objeto é uma conta com saldo R$" + this.saldo;
}
@Override
public int hashCode() {
int hash = 7;
hash = 59 * hash + this.numero;
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Conta other = (Conta) obj;
return this.numero == other.numero;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
protected double getSaldo() {
return this.saldo;
}
public void deposita(double valor) throws ValorInvalidoException {
if (valor < 0) {
throw new ValorInvalidoException("Não é possível depositar valor negativo");
} else {
this.saldo += valor - 0.10;
}
}
public void saca(double valor) {
if (this.saldo >= valor) {
this.saldo -= valor;
}
}
public abstract void atualiza(double taxaSelic);
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
import java.util.HashSet;
public class TestaHashSetDeConta {
public static void main(String[] args) {
HashSet<Conta> contas = new HashSet<>();
ContaCorrente c1 = new ContaCorrente(123, "Mauricio");
ContaCorrente c2 = new ContaCorrente(123, "Adriano");
ContaCorrente c3 = new ContaCorrente(444, "Luiz");
contas.add(c1);
contas.add(c2);
contas.add(c3);
System.out.println("Total de contas no HashSet: " + contas.size());
}
}