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

Sobrescrita dos métodos equals e hasCode

Estou utilizando o Interllij e o mesmo gerou os método abaixo que não estão iguais aos do exercício, quando utilizo o eclipse os métodos são gerados iguais ao do exercício. Porque as ideas geram métodos diferentes? O que esses métodos fazem exatamente? (Estou com dificuldades de entender)

   @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Aluno)) return false;

        Aluno aluno = (Aluno) o;

        if (getNumeroMatricula() != aluno.getNumeroMatricula()) return false;
        return getNome() != null ? getNome().equals(aluno.getNome()) : aluno.getNome() == null;

    }

    @Override
    public int hashCode() {
        int result = getNome() != null ? getNome().hashCode() : 0;
        result = 31 * result + getNumeroMatricula();
        return result;
    }
2 respostas
solução!

Oi Anderson,

Os métodos equals e hashCode diferentes das IDES é só detalhe de implementação e sempre retornam o mesmo resultado se receberem as mesmas entradas.

O método equals é usado pra comparar se um objeto é igual ao outro.

E o hashCode é usado pelo equals pra saber como os objetos estão "espalhados na memória".

o link abaixo vai te ajudar entender um pouco melhor

http://blog.caelum.com.br/ensinando-que-e-o-hashcode/

Abraços,

Como o Felipe Oliveira falou, a diferença está na forma de implementar o método, ou seja, a forma como os métodos trabalham internamente, como estamos vendo no curso existem várias formas de se fazer a mesma operação no Java, sendo assim cada IDE pode implementar métodos de maneiras diferentes que chegam ao mesmo resultado.

Espero ter Ajudado.