java - transformaciones - Construye un objeto a partir de uno existente usando lombok
transformaciones 3d en java (2)
Digamos que tengo una clase anotada como lombok
@Builder
class Band {
String name;
String type;
}
Sé que puedo hacer:
Band rollingStones = Band.builder().name("Rolling Stones").type("Rock Band").build();
¿Hay una manera fácil de crear un objeto de Foo utilizando el objeto existente como plantilla y cambiando una de sus propiedades?
Algo como:
Band nirvana = Band.builder(rollingStones).name("Nirvana");
No puedo encontrar esto en la documentación de lombok.
¿Hay una manera fácil de crear un objeto de Foo utilizando el objeto existente como plantilla y cambiando una de sus propiedades? ( énfasis mío )
Si realmente desea cambiar una sola propiedad, entonces hay una manera mejor y más eficiente:
@Wither
class Band {
String name;
String type;
}
Band nirvana = rollingStones.withName("Nirvana");
El marchitador no crea basura, pero puede cambiar solo un campo. Para cambiar muchos campos, puedes usar
withA(a).withB(b).withC(c)....
y producir toneladas de basura (todos los resultados intermedios) pero que toBuilder
es más eficiente y más natural.
Puede usar el parámetro toBuilder
para dar a sus instancias un método toBuilder()
.
@Builder(toBuilder=true)
class Foo {
int x;
...
}
Foo f0 = Foo.builder().build();
Foo f1 = f0.toBuilder().x(42).build();
De la documentación :
Si usa @Builder para generar constructores para generar instancias de su propia clase (este es siempre el caso a menos que agregue @Builder a un método que no devuelva su propio tipo), puede usar @Builder (toBuilder = true) para generar también un método de instancia en su clase llamado toBuilder (); crea un nuevo constructor que comienza con todos los valores de esta instancia.
Descargo de responsabilidad: soy un desarrollador lombok.