Saltar al contenido

Herencia para constructores en lombok

Solución:

Aquí solo tenemos que llamar al super del constructor.

@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();
            }
    }
}

Si está utilizando Lombok 1.18.4 junto con IntelliJ, el siguiente código funcionará para usted:

@Data
@Builder
class A {
    Integer a1;
}

@Data
class B extends A {
    Integer b1;

    @Builder (builderMethodName = "BBuilder")
    public B(Integer b1, Integer a1) {
        super(a1);
        this.b1 = b1;
    }
}

public class Main {

    public static void main(String[] args){
    System.out.println(B.BBuilder().a1(1).b1(1).build());

    }
}

Una nota al margen, la anotación @SuperBuilder no funcionó en IntelliJ al momento de escribir esta respuesta. Si tiene varios niveles de herencia, evite Lombok o hará que sus modelos de Java se vuelvan desordenados.

Lombok ha introducido funciones experimentales con la versión: 1.18.2 para problemas de herencia que se enfrentan con la anotación Builder, y se pueden resolver con la anotación @SuperBuilder.

Utilice la versión de lombok: 1.18.2, anotaciones de @SuperBuilder en la clase para niños / padres

¡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 *