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

NullPointerException ao retornar List<TopicoDto> no método "lista" em "TopicosController"


java.lang.NullPointerException
    at com.patrick.forum.controllers.dto.TopicoDto.<init>(TopicoDto.java:16)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
6 respostas

Oi TopicoDto

O que tem na linha 16 da classe TopicoDto? Se puder, envia o código dessa classe aqui, por favor

Olá!! Segue a TopicoDto.java e em seguida a TopicosController...

public class TopicoDto {
    private long id;
    private String titulo;
    private String mensagem;
    private LocalDateTime dataCriacao;

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

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

@RestController
public class TopicosController {

    @RequestMapping("/topicos")
    public List<TopicoDto> lista() {
        Topico topico = new Topico(
                "Dúvida",
                "Dúvida com Spring",
                new Curso("Spring", "Backend"));

        return TopicoDto.converter(Arrays.asList(topico, topico, topico));
    }
}
solução!

Oi Patrick,

O problema é que na classe TopicoDto voce declarou o atributo id como long, sendo que deveria ser Long(L maiusculo).

Lembre-se de alterar tambem o getter desse atributo.

Bons estudos!

Muito obrigado, Rodigo!! Era isso mesmo... Por curiosidade, vc poderia me explicar o pq disso ocorrer??

Oi Patrick,

Como nao setamos o id ao criar o objeto topico, ele ficou como null. Mas na hora de converter para TopicoDto o Java tentou pegar o id null e converter para long primitivo e isso causa o erro, pois nao da para converter um valor null em tipo primitivo.

Bons estudos!

Nooossa!! Claro, claro!! Faz todo sentido... Mais uma vez, muito obrigado, Rodrigo!!