Saltar al contenido

lombok @Data se queja “lombok necesita un constructor predeterminado en la clase base”, cuando la clase abstracta tiene un campo final

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 AEl 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *