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

Erro ao utilizar o stream().map

Não estou conseguindo utilizar o método:

public static List converter(List topicos) { return topicos.stream().map(TopicoDto::new).collect(Collectors.toList()); }

A IDE exibe este erro:

  • The method map(Function<? super Topico,? extends R>) in the type Stream is not applicable for the arguments (TopicoDto::new)
  • The type TopicoDto does not define TopicoDto(Topico) that is applicable here.

Estou utilizando a jdk "1.8.0_241"

3 respostas
solução!

Olá Daniela, tudo certo?

1° - Acredito que seja por causa do generic type da lista, pois a função map espera uma Function<? super Topico, ? extends R>, ou seja, espera uma Function em que o primeiro parâmetro (? super Topico) tenha como superclasse Topico, e o segundo parâmetro (extends R) extenda R.

Basta apenas adicionar Topico como generic type da Lista no parâmetro e retorno.

Ex: public static List<Topico> converter(List<Topico> topicos) {...}.

2° - Não existe um construtor em TopicoDto que receba como parâmetro uma referência para Topcio.

Espero ter ajudado!

Olá Matheus,

Me ajudou muito !!

Mas observando a classe TopicoDto, percebi que no método construtor da classe, eu estava esperando receber por parâmetro um objeto do tipo TopicoDto, quando na verdade devia ser um do tipo Topico apenas. Fiz a alteração que você sugeriu e alterei esse construtor ai funcionou.

Muito obrigada pela atenção e ajuda.

Disponha e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software