Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como que a stream do instrutor funciona?

Terminei recentemente o curso de Novidades do Java 8 e agora entendo um pouco melhor as streams.

Mas o jeito que o instrutor as usam me despertou uma dúvida: O método map() recebe uma função. Essa função tem o método apply que, dado um objeto T, retorna um objeto R. E aí que entra a dúvida. O objeto T, até aonde eu saiba, é o tipo da stream (um Tópico). DadoUmTópico::ChameUmMétodoDesteTópico. O retorno da ação ChameUmMétodoDesteTópico é o que define o novo tipo da Stream.

Alguém poderia me explicar o que acorre por baixo dos panos para atingir o resultado? Pois no código do instrutor, o que vemos é: return topicos.stream().map(TopicoDto::new).collect(Collectors.toList()); É justamente o TopicoDto::new que não entendo.

OBS: Eu fiz umas pesquisas, e deduzindo algumas coisas, a conclusão que cheguei foi a seguinte: o TopicoDto::newfunciona porque na classe TopicoDto existe um construtor que recebe um Topico. É isso mesmo ou é outra coisa?

Fonte de pesquisa: Stackoverflow; Baeldung; Java Code Geeks

Update: Aparentemente, é o construtor mesmo. Depois que comentei ele, o método dá erro.

1 resposta
solução!

Oi Arthur,

Bela pesquisa que você fez :)

O ::new faz exatamente o que você mencionou, instancia um objeto passando como parâmetro o próprio objeto do stream.

Bons estudos!