1
resposta

Erro no construtor

Por que quando crio um Record como o exemplo abaixo ele não da o erro "Non-canonical record constructor must delegate to another constructor"

public record DadosCadastroTopico(
        Long id,
        String titulo,
        String mensagem,
        LocalDateTime dataCriacao
) {
    public DadosCadastroTopico(Topico topico) {
        this(topico.getId(), topico.getTitulo(), topico.getMensagem(), topico.getDataCriacao());
    }
}

Porem quando crio do outro jeito da esse erro

public record DadosCadastroTopico(
        Long id,
        String titulo,
        String mensagem,
        LocalDateTime dataCriacao
) {
    public DadosCadastroTopico(Topico topico) {
        this.id = topico.getId(),
        this.titulo = topico.getTitulo(), 
        this.mensagem = topico.getMensagem(), 
        this.dataCriacao = topico.getDataCriacao());
    }
}
1 resposta

Olá Gabriel, tudo bem?

O erro "Non-canonical record constructor must delegate to another constructor" ocorre quando o construtor de um Record não delega para outro construtor. No primeiro exemplo que você postou, o construtor delega para outro construtor, por isso não ocorre o erro.

Já no segundo exemplo, o construtor não está delegando para outro construtor, por isso ocorre o erro.

Lembre-se que o Record é uma feature nova do Java e ainda está em processo de evolução, por isso podem ocorrer mudanças e ajustes.

Espero ter ajudado e bons estudos!