[JAVA] Geben Sie den Standardwert mit @Builder of Lombok an

Nachtrag (10.9.2017)

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.

Überblick

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.

So legen Sie den Standardwert für "@ Builder" fest

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 = "";
    }
}

Referenz

Recommended Posts

Geben Sie den Standardwert mit @Builder of Lombok an
Geben Sie beim Erstellen mit Maven den Zeichencode der Quelle an
NoSuchMethodException mit lombok ohne Standardkonstruktor
Geben Sie das Standard-JAVA_HOME an, das in Buildship verwendet wird
Überprüfen Sie den Inhalt der Parameter mit pry
Bitarithmetik des Binärwerts mit BigInteger
Samshin über den Wert des versteckten Feldes
Über die Behandlung von BigDecimal (mit Reflexion)
Formatieren Sie den Inhalt von LocalDate mit DateTimeFormatter
Initialisieren Sie das Ruby-Array mit 0 für Java, dh setzen Sie den Standardwert auf 0
Überprüfen Sie den Inhalt des Argumentobjekts mit Mockito
[Ruby] Schlüsselwörter mit Schlüsselwörtern und Standardwerten von Argumenten
Verwalten Sie die Version von Ruby selbst mit rbenv
Überschreiben Sie den Inhalt der Konfiguration mit Spring-boot + JUnit5
Die Geschichte der Optimierung der Android-App mit libGDX
Berechnen Sie die Ähnlichkeitsbewertung von Zeichenketten mit JAVA
Bereiten Sie die CentOS 8-Umgebung mit Sakura VPS vor
Messen Sie den Abstand des Labyrinths mit der Suche nach Breitenpriorität
Ich habe die Anzahl der Taxis mit Ruby überprüft
Geschwindigkeitsvergleich, wenn die Werteseite von Hash alles mit Array abrufen möchte
Argumente mit Standardwerten Nehmen Sie als Beispiel die Methode full_title des Rails-Lernprogramms
[Jackson] Eine Geschichte über das Konvertieren des Rückgabewerts des Big Decimal-Typs mit einem benutzerdefinierten Serializer.
Geben Sie die statische Ressourcencodierung in Spring Boot an
Listen Sie den Inhalt von Kategorien auf, die mit Active Hash erstellt wurden
JavaFX - Passen Sie die Größe von ImageView an andere Knoten an
CI die Architektur von Java / Kotlin-Anwendungen mit ArchUnit
[JUnit 5] Der Umgang mit "der Referenz von assertEquals ist mehrdeutig"
Greifen Sie mit jdbcTemplate auf das integrierte h2db des Spring Boot zu
Testen Sie den Inhalt einer Excel-Datei mit JUnit
Die Geschichte, einen Reverse-Proxy mit ProxyServlet zu erstellen
[Java] So erhalten Sie den Maximalwert von HashMap
Überwachen Sie den internen Status von Java-Programmen mit Kubernetes
Implementieren Sie iOS14 UICollectionView mit dem minimal erforderlichen Code.
Überprüfen Sie das Verhalten von Java Intrinsic Locks mit bpftrace
[Rails] Standardmäßig festgelegte Kennwortüberprüfung abbrechen / ändern
Zeigen Sie den Durchschnittswert der Bewertung als Stern an
Finden Sie mit Swift eine Annäherung an log (1 + x)
Verwenden Sie die Standardmethode der Schnittstelle ordnungsgemäß?
Steuern Sie den Spring Batch-Verarbeitungsablauf mit JavaConfig.
Geben Sie VS Code als Standardeditor für jshell an
Wie ist der nächste Wert des Time-Objekts korrekt?
Die Geschichte von dto, dao-like mit Java, SQLite
Ersetzen Sie nur einen Teil des URL-Hosts durch Java
[Java] Der Abdeckungsbericht konnte nicht durch Kombinieren der Standardmethode der Cobertura + -Schnittstelle erstellt werden
So geben Sie ein Array für den Rückgabewert / das Rückgabeargument einer Methode in der CORBA IDL-Datei an