2
respostas

Não executa o equals antes de declarar HashCode

Estava fazendo teste enquanto lia, e ao criar o equals e ver o false, criei uma saída

    @Override
    public boolean equals(Object o) {
        Aluno outroAluno = (Aluno) o;
        System.out.println("testando equals");
        return this.nome.equals(outroAluno.getNome());

    }

POrém antes de declarar o hashCode, esse sysout não aparece. Qual o motivo?

Depois de declarado o hashCode ele passa a executar o código e gerar o sysout "testando equals".

2 respostas

Opa, o motivo é que o método realmente não está sendo chamado.. agora a questão é em que cenário isso está acontecendo. Pode explicar para gente? Ta testando a comparação num cenário de uso de um Set?

Seguindo a aula, neste passo

Temos false como resultado. No entanto, se mudamos o equals, por que ele continua dizendo que turini não está matriculado? Ao comparar turini com a1, o resultado é true (como visto no nosso teste), porém o estaMatriculado nos retorna false

Depois do equals e antes do hashcode. Nessa hora ao executar ele nem passa no equals, só passa depois de declarar o hashcode.