web-dev-qa-db-fra.com

Lombok: RequiredArgsConstructor ne fonctionne pas

Il paraît que @RequiredArgsConstructor ne fonctionne pas dans le code ci-dessous. Pourquoi?

import Java.io.Serializable;

import lombok.Data;
import lombok.RequiredArgsConstructor;

@Data
@RequiredArgsConstructor
public class User implements Serializable {

    private String username;

    /*public User(String username) {
        this.username = username;
    }*/

    private static final long serialVersionUID = 8043545738660721361L;
}

Je reçois l'erreur:

javax.faces.el.EvaluationException: Java.lang.Error: Unresolved compilation problem: 
    The constructor User(String) is undefined

Pour une raison quelconque, cela semble fonctionner pour une autre classe de domaine dans laquelle aucun constructeur n'a défini mais a plutôt utilisé le @RequiredArgsConstructor annotation.

11
rozerro

Selon Documentation , les arguments requis sont les champs finaux et les champs avec des contraintes telles que @NonNull.

Vous devez créer un nom d'utilisateur comme @NonNull

@NonNull private String username;

Et vous devez également les rendre définitifs.

25
a3.14_Infinity

Il convient également de noter pour les futurs lecteurs que @ Data fournit également @ RequiredArgsConstructor , il n'est donc pas nécessaire d'utiliser les deux annotations :)

3
adrianostgard