Ich verwende Lomboks @Data
Und @Builder
Anmerkungen wie diese:
@Data
@Builder(toBuilder = true)
class Movie {
// Some other fields here.
private final List<Actor> actors;
}
Wenn ich ein neues erstelle Movie
Wenn ich den Builder verwende, ohne irgendwelche Akteure anzugeben, würde ich erwarten, dass Lombok meine Liste initialisiert Collections.emptyList()
. Aber das passiert nicht:
List<Actor> actors = Movie.builder().build().getActors();
System.out.println(actors); // Prints 'null'.
In der Dokumentation zum @Builder
Anmerkung, es wird in Zeile 55 und 56 im Codebeispiel für Vanilla Java angegeben (https://projectlombok.org/features/Builder.html), für die ich mir das Codebeispiel ansehen sollte @Singular
(https://projectlombok.org/features/Singular-snippet.html). In Zeile 112 im Vanilla-Java-Beispiel hier scheint es, als ob die Liste mit der leeren Liste initialisiert werden sollte.
Ich habe es überprüft und es passiert tatsächlich, wenn ich die Liste mit kommentiere @Singular
:
@Data
@Builder(toBuilder = true)
class Movie {
// Some other fields here.
@Singular
private final List<Actor> actors;
}
List<Actor> actors = Movie.builder().build().getActors();
System.out.println(actors); // Prints '[]'.
Ist das ein Fehler in Lombok oder mache ich etwas falsch? Der Dokumentation zufolge scheint es, als ob die Liste in beiden Fällen mit der leeren Liste initialisiert werden sollte (da die @Builder
doc bezieht sich auf die @Singular
doc).
Ich verwende übrigens die Lombok-Version 1.16.6.
– marstran
28. September 2015 um 13:55 Uhr