J'essayais d'utiliser Lombok pour mon projet.
J'ai une classe A:
@Data
@Builder
public class A {
Integer a1;
}
et une classe B:
@Data
public class B extends A {
Integer b1;
@Builder
public B(Integer b1, Integer a1) {
super(a1);
this.b1 = b1;
}
}
Je reçois une erreur disant que builder () dans B ne peut pas remplacer builder () dans A, car le type de retour dans BBuilder n'est pas compatible avec le type de retour dans ABuilder.
Y a-t-il un moyen de faire cela en utilisant lombok? Je ne veux pas écrire le constructeur complet pour B, sauf si je n'ai pas d'autre option.
PS: J'ai donné un constructeur explicite pour la classe B en raison de Issue . J'ai essayé de chercher, mais je ne trouvais pas de bonne solution pour la même chose. Toute aide est vraiment appréciée.
Ici, nous devons juste appeler super du constructeur.
@Data
public class B extends A {
Integer b1;
@Builder
public B(Integer b1, Integer a1) {
super(a1);
this.b1 = b1;
}
public static class BBuilder extends ABuilder{
BBuilder() {
super();
}
}
}
Lombok a introduit des fonctionnalités expérimentales avec la version 1.18.2 pour les problèmes d'héritage liés à l'annotation Builder, et peut être résolu avec l'annotation @SuperBuilder
Veuillez utiliser la version de lombok: 1.18.2, les annotations @SuperBuilder dans la classe enfant/parent