2
respostas

[Dúvida] duvida sobre imprimir a quantidade alunos utilizando method reference

**Como você faria pra ordenar essa lista pela quantidade de alunos?

Você pode escolher entre usar um expressão lambda ou method reference.

apos listar com lambda e method reference tentei imprimir e tive os seguintes resultados:

com lambda funcionou corretamente:

cursos.forEach(c -> System.out.println(c.getAlunos()));

mas quando tentei imprimir com method references:

cursos.forEach(System.out::println);    

Ele apenas imprimiu aquela "sujeirinha" do espaço ocupado em memoria.

Entao fui na minha clase Curso e fiz o seguinte toString:

@Override
    public String toString() {
        return Integer.toString(alunos) ;
    }

assim funcionou. Gostaria de saber se teria como acessar(imprimir) os alunos com o method reference sem criar o toString, tentei acessar de diversas formas mas dava erro de sintaxe, neste caso o mr nao se aplicaria por ser algo que foge da sua capacidade? Seria isso?

2 respostas

Fala Jefferson, tudo certo?

O Method Reference consegue acessar os métodos e utilizá-los estaticamente, se fossemos destrinchar o trecho de código:

cursos.forEach(System.out::println);    

poderíamos ler da seguinte maneira:

for(Curso curso: cursos){
    System.out.println(curso);
}

Porque é justamente o comportamento do código. Isso quer dizer que se tivermos um método que faz essa impressão na classe Curso, poderíamos chamar algo do tipo:

cursos.forEach(Curso::imprime);


//método imprime():

public void imprime(){
    System.out.println(this.nome);
}

E assim seria possível fazer a impressão a partir de Method Reference. Caso contrário o mais indicado seria utilizar uma lambda expression ou um for/foreach tradicional.

Em caso de dúvidas, estou à disposição.

Um grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Entendi. Obrigado pela a explicação detalhada! Abraços...