1
resposta

MAIS E MAIS CODIGOS QUE NAO FUNCIONAM

Na aula funciona. No exercicio, faço COPY-PASTE e nao funciona. Na aula se mostra que o resultado é true, no COPY-PASTE da false. Alguem consegue explicar porque? Eu agradeceria muito.

CODIGO DA CLASE

package br.com.alura;

    public class TestaCursoComAluno {

        public static void main(String[] args) {

            Curso javaColecoes = new Curso("Dominando as coleções do Java",
                    "Paulo Silveira");

            javaColecoes.adiciona(new Aula("Trabalhando com ArrayList", 21));
            javaColecoes.adiciona(new Aula("Criando uma Aula", 20));
            javaColecoes.adiciona(new Aula("Modelando com coleções", 24));

            Aluno a1 = new Aluno("Rodrigo Turini", 34672);
            Aluno a2 = new Aluno("Guilherme Silveira", 5617);
            Aluno a3 = new Aluno("Mauricio Aniche", 17645);

        javaColecoes.matricula(a1);
        javaColecoes.matricula(a2);
        javaColecoes.matricula(a3);


        Aluno turini = new Aluno("Rodrigo Turini", 34672);
                System.out.println(a1.equals(turini));
                }

    }
CODIGO DOS OVERRIDE, tambem copy-paste
        @Override
        public boolean equals(Object obj) {
            Aluno outroAluno = (Aluno) obj;
            return this.nome.equals(outroAluno.getNome());
        }

        @Override
        public int hashCode(){
            return this.nome.hashCode();
        }


1 resposta

Olá Yaco, tudo bem com você?

Se queremos comparar objetos do tipo Aluno, os métodos equals() e hashcode() devem ser implementados dentro da classe do Aluno, já que é a própria classe quem deve conhecer os seus critérios de comparação. Nesse caso, queremos comparar objetos do tipo Aluno usando como critério de comparação os seus respectivos nomes. Portanto, os métodos equals() e hashcode() devem ser implementados na classe Aluno para que quando formos ordenar a lista de alunos matriculados, o Java saiba quais critérios utilizar.

Em outras palavras, da forma como eles estão sendo implementados (dentro da classe TestaCursoComAluno), o Java não consegue localizar os métodos equals() e hashcode() na classe Aluno e, consequentemente, não consegue fazer a ordenação da lista de alunos matriculados. Para resolver isso, você precisaria implementar esses dois métodos na classe Aluno, inclusive, podendo remover esse .getNome() em outroAluno.getNome().

Se ficou alguma dúvida é só avisar! Abraços!!