Ab Version 1.16.16 können Sie den Standardwert angeben, indem Sie die Annotation @ Builder.Default
hinzufügen.
@Builder
public class Coupon {
@Builder.Default
private UUID id = UUID.randomUUID();
private String name;
private String description;
private ZonedDateTime expireDate;
}
Spring Boot wurde übrigens in Version 1.5.3 importiert. Wenn Sie also eine frühere Version verwenden, müssen Sie die Version explizit angeben.
Lomboks @Builder ist eine Anmerkung, die automatisch eine Builder-Klasse für eine bestimmte Klasse generiert.
@Value
@Builder
public class Coupon {
private UUID id;
private String name;
private String description;
private ZonedDateTime expireDate;
}
Coupon coupon = Coupon.builder()
.name("Überraschter Gutschein")
.description("Überraschter Gutschein")
.expireDate(ZonedDateTime.parse("2017-01-30T23:59:59+09:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME))
.build();
Die Eigenschaft, für die im Builder-Aufruf kein Wert angegeben ist, ist jedoch "null". Wenn Sie versuchen, einen anderen Standardwert als null festzulegen, funktioniert dies nicht, selbst wenn Sie ihn wie folgt in die Zielklasse schreiben.
@Value
@Builder
public class Coupon {
private UUID id = UUID.randomUUID(); //Gilt nicht
private String name = ""; //Gilt nicht
private String description;
private ZonedDateTime expireDate;
}
Daher werde ich dieses Mal vorstellen, wie der Standardwert richtig eingestellt wird.
Um den Standardwert festzulegen, beschreiben Sie die Builder-Klasse mit der Namenskonvention "Zielklassenname + Builder", wie unten gezeigt. Der Rest wird durch Lombok gut ergänzt.
@Value
@Builder
public class Coupon {
private UUID id;
private String name;
private String description;
private ZonedDateTime expireDate;
public static class CouponBuilder {
private UUID id = UUID.randomUUID();
private String name = "";
}
}
Recommended Posts