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::new
funciona 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.