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

erro DTO

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 void TopicoDto(Topico topico) { 
    this.id = topico.getId(); 
        this.titulo = topico.getTitulo();
        this.mensagem = topico.getMensagem();
        this.dataCriacao = topico.getDataCriacao();

        }

public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}
public String getTitulo() {
    return titulo;
}
public void setTitulo(String titulo) {
    this.titulo = titulo;
}
public String getMensagem() {
    return mensagem;
}
public void setMensagem(String mensagem) {
    this.mensagem = mensagem;
}
public LocalDateTime getDataCriacao() {
    return dataCriacao;
}
public void setDataCriacao(LocalDateTime dataCriacao) {
    this.dataCriacao = dataCriacao;
}

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

escrevi os códigos acima e apareceu esse erro abaixo no Localhost

}

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Jul 05 11:00:54 BRT 2022 There was an unexpected error (type=Internal Server Error, status=500). Unresolved compilation problems: 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 java.lang.Error: Unresolved compilation problems: 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

at br.com.alura.forum.controller.dto.TopicoDTO.converter(TopicoDTO.java:50)
at br.com.alura.forum.controller.TopicosController.lista(TopicosController.java:21)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)

(tive que apagar parte dessa lista de códigos porque passou do limite de caracteres)

5 respostas

Oi Wander,

O problema é que na sua classe TopicoDto você não declarou um construtor e sim um método:

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

Apague a palavra void para que seja um construtor:

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

Rodrigo apaguei o void e continua com o mesmo problema.

inclusive o Eclipse até me sugere para por o void.

o que faço ???

solução!

Outro detalhe que vi agora, o nome do construtor deve ser o mesmo nome da classe. Sua classe está com a palavra DTO tudo maiúsculo, então o construtor deve ter o mesmo nome.

funcionou kkkkkk desculpa pelo erro bobo

Tranquilo. Bom que resolveu :)

Tem uns errinhos que você passa o olho milhões de vezes e não percebe :D

Bons estudos!