@Data
public abstract class B {
private final String str;
}
@Data
public class A extends B{
private final String s;
}
Les données sur la classe A se plaignent dans intellij, mais les codes peuvent être compilés avec succès via la ligne de commande, je ne sais pas quoi faire
Un problème est que @Data
est destiné aux données mutables et il n'y a rien de mutable dans vos classes. Donc, en utilisant @Data
est tout simplement faux ... et qu'il compile ou non n'a pas vraiment d'importance.
Si vous souhaitez des données modifiables, supprimez le champ final
. Pour les données immuables, créez tous les champs final
et utilisez @Value
. Parfois, des données partiellement modifiables sont nécessaires, mais je m'efforce de les éviter car elles sont déroutantes (certains champs peuvent être définis, d'autres pas) et ils présentent des inconvénients pour les deux.
L'autre problème est que Lombok ne peut pas accéder aux hiérarchies de classes. Avec B
ayant un champ final, vous devez l'initialiser dans le constructeur, ce qui signifie que le constructeur de A
doit appeler un constructeur non par défaut. Ce n'est pas possible avec Lombok. Il y a @Superbuilder
dans Lombok, qui est la seule caractéristique de Lombok qui gère bien les hiérarchies de classes.