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

Método de conversão

Ao implantar o método para conversão, estou tomando esse erro:

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

Segue meu código

package br.com.alura.forum.controller.dto;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;

import br.com.alura.forum.modelo.Topico;

public class TopicoDto {

    private long id;
    private String titulo;
    private String mensagem;
    private LocalDateTime dataCriacao;

    public TopicoDto(TopicoDto topico) {
        this.id = topico.getId();
        this.titulo = topico.getTitulo();
        this.mensagem = topico.getMensagem();
        this.dataCriacao = topico.getDataCriacao();
    }

    public long getId() {
        return id;
    }
    public String getTitulo() {
        return titulo;
    }
    public String getMensagem() {
        return mensagem;
    }
    public LocalDateTime getDataCriacao() {
        return dataCriacao;
    }

    public static List<TopicoDto> converter(List<Topico> topicos) {

        return topicos.stream().map(TopicoDto::new).collect(Collectors.toList());
    }

}
2 respostas
solução!

Oi Rafael,

O problema esta no construtor da sua classe TopicoDto:

public TopicoDto(TopicoDto topico) {
        this.id = topico.getId();
        this.titulo = topico.getTitulo();
        this.mensagem = topico.getMensagem();
        this.dataCriacao = topico.getDataCriacao();
}

Ele esta recebendo como parametro um objeto do tipo TopicoDto mas deveria ser do tipo Topico:

public TopicoDto(Topico topico) {
        this.id = topico.getId();
        this.titulo = topico.getTitulo();
        this.mensagem = topico.getMensagem();
        this.dataCriacao = topico.getDataCriacao();
}

Outra coisa, altere o tipo do atributo id de long para Long(L maiusculo), senao isso pode causar uma exception. Obs: altere tambem o metodo getter desse atributo para Long.

Bons estudos!

Muito obrigado Rodrigo!