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

Duvida metodo converter - Classe Dto

Estou fazendo um projeto de testes para consolidar o conhecimento.

Porém ao desenvolver o metodo converter em uma classe Dto, exatamente na linha abaixo, não é exibido o metodo collect após o map.

Não consegui descobrir o motivo.

return produtos.stream().map(ProdutoDto::new).

Segue codigo completo da classe.

package br.com.mercado.bompreco.dto;

import java.util.List;

import br.com.mercado.bompreco.modelo.Produto;

public class ProdutoDto {

    private Long id;
    private String descricao;


    public ProdutoDto(Long codigo, String descricao) {        
        this.id = codigo;
        this.descricao = descricao;
    }
    public Long getCodigo() {
        return id;
    }
    public String getDescricao() {
        return descricao;
    }

    public static List<ProdutoDto> converter(List<Produto> produtos) {
        return produtos.stream().map(ProdutoDto::new).
    }
}
2 respostas
solução!

Opa Jorge, tudo bem?

Cara, provavelmente é porque o MAP está incorreto, a forma certa seria assim:

public static class ProdutoDto {

        private Long id;
        private String descricao;

        public ProdutoDto(Long codigo, String descricao) {
            this.id = codigo;
            this.descricao = descricao;
        }

        public Long getCodigo() {
            return id;
        }

        public String getDescricao() {
            return descricao;
        }

        public static List<ProdutoDto> converter(List<Produto> produtos) {
            return produtos.stream().map(produto -> new ProdutoDto(produto.getId(), produto.getDescricao())).collect(Collectors.toList());
            //dependendo da versão do java, voce pode dar um .toList() só.
        }
    }

caso você queira usar method reference, você precisa receber o parâmetro do lambda no método que você esta chamando, como neste exemplo aqui:

    public static class ProdutoDto {

        private Long id;
        private String descricao;

        public ProdutoDto(Produto produto) {
            this.id = produto.getId();
            this.descricao = produto.getDescricao();
        }

        public Long getCodigo() {
            return id;
        }

        public String getDescricao() {
            return descricao;
        }

        public static List<ProdutoDto> converter(List<Produto> produtos) {
            return produtos.stream().map(ProdutoDto::new).collect(Collectors.toList());
        }
    }

Mas muito bem, é sempre bom criamos projetos de testes para praticar, continue assim que você vai longe.

Espero que tenha ficado mais claro, qualquer coisa pode perguntar :)

Valeu Gabriel, o problema estava ligado a criação do contrutor.

Obrigado pelo apoio.