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.