2
respostas

[Dúvida] Sobre a annotation @AllArgsConstructor

Bom dia professor, tudo bem? Minha dúvida é com relação a annotation @AllArgsConstructor da biblioteca lombok.

Pelo que eu havia enteindido, o grande benefício do uso desta annotation seria o fato de que não precisariamos nos preocupar em criar um construtor. Eu acabei também conclulido que não seria necessario ficar fazendo sobrecarga de construtores da classe.

Eu imaginava que sempre que fosse necessário criar diferentes instâncias de uma classe (qualquer que fosse a razão) a annotation: @AllArgsConstructor se encarregaria de gerar um construtor para aquele objeto com os atributos fornecidos.

Mas pelo que percebi no forum abaixo, nosso colega teve que adicionar um "null" ao metodo cadastrarConsulta pois em sua classe Consulta ele já contava com um atributo enun MotivoCancelamento. (ver abaixo)

Erro na construtor da classe Consulta

private void cadastrarConsulta(Medico medico, Paciente paciente, LocalDateTime data) {
        em.persist(new Consulta(null, medico, paciente, data ,null));
    }

Sendo assim, seria correto afirmar que @AllArgsConstructor cria um único construtor com todos os atributos ? Se quisermos criar uma instancia desta classe com um contrutor Default ou uma sobrecarga, somos obrigados a manualmente adiciona-lo(s) a classe?

Por favor me perdoe se a resposta para esta pergunta é muito óbvia. Agradeço a atenção.

2 respostas

Oii, Leandro

Você está correto em sua compreensão. @AllArgsConstructor anotação gera um construtor com um parâmetro para cada campo da classe, ou seja, um único construtor que inclui todos os atributos da classe.

Se você quiser criar uma instância da classe Consulta sem precisar fornecer todos os parâmetros, terá que criar manualmente um construtor adicional :)

Espero ter ajudado e bons estudos!

Muito obrigado pela resposta. Ajudou sim, com certeza. Tenha um ótimo dia.