Superbuilder
@SuperBuilder
La anotación @SuperBuilder de Lombok es una versión mejorada de @Builder, pensada para clases que heredan de otras clases. Permite construir objetos de manera fluida y sencilla, incluso cuando las propiedades están en superclases.
❗📌 Requiere que todas las superclases usen también @SuperBuilder.
¿Cuándo usarlo?
- Cuando tienes clases que heredan de otras y quieres usar el patrón builder.
- Cuando quieres una forma clara y flexible de construir objetos complejos.
Ejemplo básico
import lombok.experimental.SuperBuilder;
@SuperBuilder
class Persona {
String nombre;
String ciudad;
}
@SuperBuilder
class Empleado extends Persona {
String trabajo;
}
Uso:
Empleado empleado = Empleado.builder()
.nombre("Adam Savage")
.ciudad("San Francisco")
.trabajo("Mythbusters")
.build();
🔧 Personalización
toBuilder = true
Si agregas toBuilder = true, puedes crear un nuevo builder a partir de una instancia existente.
@SuperBuilder(toBuilder = true)
class Persona {
String nombre;
String ciudad;
}
Persona p1 = Persona.builder()
.nombre("Laura")
.ciudad("Madrid")
.build();
Persona p2 = p1.toBuilder()
.ciudad("Barcelona")
.build();
Personalización de métodos
@SuperBuilder(
buildMethodName = "ejecutar",
builderMethodName = "crear",
toBuilder = true,
setterPrefix = "con"
)
class Persona {
String nombre;
}
Persona persona = Persona.crear()
.conNombre("Carlos")
.ejecutar();