Saltar al contenido

Lombok Personaliza SuperBuilder

Estate atento porque en esta reseña vas a hallar el resultado que buscas.Esta división ha sido evaluado por nuestros expertos para garantizar la calidad y veracidad de nuestro contenido.

Solución:

Recientemente intenté personalizar @SuperBuilder usando Lombok 1.18.8 e IntelliJ, y funcionó bien. El único problema que enfrenté fue que perdí la capacidad de usar toBuilder bandera en SuperBuilder – @SuperBuilder(toBuilder=true).

A continuación se muestra el código para anular los métodos de @SuperBuilder.

public static abstract class ChildBuilder>
        extends ParentBuilder 

    private LocalDate date;

    public B date(String dateStr) 
        this.date = LocalDate.parse(dateStr);
        return self();
    

Agregué mi código de trabajo aquí: Personalizar SuperBuilder en Lombok

Cuando @SuperBuilder se introdujo en 1.18.2, no fue posible personalizarlo. Si lo intenta, Lombok 1.18.2 le da el mensaje de error SuperBuilder does not support customized builders.

Sin embargo, Lombok 1.18.4 agregó posibilidades limitadas de personalización de @SuperBuilder. (Está limitado porque no puede modificar los métodos de establecimiento, pero puede agregar sus propios métodos y modificar build() y builder().)

lo generado @SuperBuilder El código es bastante complejo y difiere de @Builder. Para evitar estropear accidentalmente el código del constructor cargado de genéricos, debe comenzar copiando el encabezado de la clase del constructor de la salida de delombok. En su caso (agregando un nuevo método setter), personalice la clase de constructor abstracto ParentBuilder (y no el ParentBuilderImpl). Eche un vistazo al código delomboked para averiguar cómo se debe definir su setter, especialmente el tipo de retorno.

Este es el código de construcción personalizado para su ejemplo:

public abstract static class ParentBuilder> 
    public B setAllTo(final int value) 
       return a(value).b(value);
    

Con Lombok 1.18.4, esto compila y funciona como se esperaba.

Si entiendes que te ha sido de utilidad este artículo, sería de mucha ayuda si lo compartieras con el resto seniors de este modo nos ayudas a difundir nuestra información.

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