Solución:
los @Data
la anotación no agrega un constructor predeterminado. Intenta agregar un @NoArgsConstructor
a tu clase base B
para generar un constructor predeterminado con Lombok.
También puede leer lo que @Data
en realidad significa aquí.
Un problema es que @Data
está destinado a datos mutables y no hay nada mutable en sus clases. Entonces usando @Data
es simplemente incorrecto … y si se compila o no, realmente no importa.
Si desea datos mutables, elimine el final
campo. Para datos inmutables, haga que todos los campos final
y use @Value
. A veces, se necesitan datos parcialmente mutables, pero me esfuerzo por evitarlos ya que son confusos (algunos campos se pueden configurar, otros no) y proporcionan desventajas de ambos.
El otro problema es que Lombok no puede acceder a las jerarquías de clases. Con B
tener un campo final, necesita que se inicialice en el constructor, lo que significa que A
El constructor de tiene que llamar a un constructor no predeterminado. Esto no es posible con Lombok. Hay @Superbuilder
en Lombok, que es la única característica de Lombok que se ocupa bien de las jerarquías de clases.
Esto no compila eventos. En Intellij
, cuando no está seguro de cuál es el problema con lombok
código, puede abrir la clase en la que no está seguro, continúe Refactor
-> Delombok
-> All lombok annotations
y verá lo que realmente lombok crea para usted.