En utilisant Lombok, est-il possible de spécifier un constructeur à un argument?
Mon intention est d'utiliser des annotations Lombok pour créer un constructeur tel que celui ci-dessous.
class MyClass {
private String param;
private Integer count;
public MyClass(String param) {
this.param = param;
}
}
Je n'ai pas trouvé dans la documentation
Que diriez-vous de ceci: http://projectlombok.org/features/Constructor.html ?
Vous devez initialiser toutes les variables qui ne devraient pas faire partie du constructeur.
@RequiredArgsConstructor génère un constructeur avec 1 paramètre pour chaque champ qui nécessite une gestion spéciale. Tous les champs finaux non initialisés obtiennent un paramètre, ainsi que tous les champs marqués comme @NonNull qui ne sont pas initialisés là où ils sont déclarés. Pour les champs marqués avec @NonNull, une vérification nulle explicite est également générée.
Donc, ce qui suit devrait créer un constructeur à un argument (param
):
@RequiredArgsConstructor class MyClass {
private String param;
private Integer count = -1;
}
Lombok ne vous permet pas de spécifier exactement les champs, mais vous avez le choix entre 3 annotations. Avec
@RequiredArgsConstructor class MyClass {
private final String param;
private Integer count;
}
tu peux l'avoir. Un argument est obligatoire s'il n'est pas initialisé en ligne et final
ou @NonNull
.
@RequiredArgsConstructor
et @NonNull
sont deux clés importantes pour résoudre le problème ci-dessus. Car @RequiredArgsConstructor
crée un constructeur avec des champs qui sont annotés par @NonNull
annotation.
@RequiredArgsConstructor
class MyClass {
@NonNull
private String param;
private Integer count;
}
Cela équivaut à:
class MyClass {
private String param;
private Integer count;
public MyClass(String param) {
this.param = param;
}
}