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

Sugestão de Lambda

No final do vídeo do capítulo 06 - Aplicando o Set no modelo, nos fazemos a exibição da lista de alunos do curso "javaColecoes" utilizando a lambda


*javaColecoes.getAlunos().forEach(a -> {
            System.out.println(a); *

Como uso o Intellij, ele me deu a sugestão da substituição da lambda pela utilização do método referência diretamente, através da saída;

javaColecoes.getAlunos().forEach(System.out::println);

É correta a utilização do método desta forma ? Pelo que vi na documentação, a classe PrintStream do pacote java.io faz o tratamento do Objeto e o transforma em String. Aliás, pelo que vi na documentação, esta classe possui tratamento para todo tipo de Objeto. Está correta a minha leitura desta classe ?

2 respostas
solução!

Olá Paulo, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Você está correto sim. A sintaxe System.out::println utilizando o operador de dois pontos é chamada de método de referência (Method reference) e em resumo, é uma forma abreviada de escrever a função lambda, que nesta nova sintaxe irá receber o método como referência para a função. Sendo assim, em resumo, tanto o primeiro código abaixo, quanto o segundo, são equivalentes:

forEach(a -> { System.out.println(a); }
forEach(System.out::println)

A título de curiosidade, caso queira se aprofundar neste assunto, recomendo como leitura um artigo da Alura, que fala sobre possibilidades, limitações e diferenças do método de referência o em comparação a uma função lambda:

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

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

Abraços e bons estudos!

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

Obrigado Felippe pela explicação e pela indicação de conteúdo !!