sto usando di Lombok @Data
e @Builder
annotazioni come questo:Lombok @Builder non inizializzazione collezioni
@Data
@Builder(toBuilder = true)
class Movie {
// Some other fields here.
private final List<Actor> actors;
}
Quando creo un nuovo Movie
utilizzando il costruttore, senza specificare alcun attori, mi aspetterei Lombok per inizializzare la mia lista a Collections.emptyList()
. Ma questo non accade:
List<Actor> actors = Movie.builder().build().getActors();
System.out.println(actors); // Prints 'null'.
Nella documentazione per il @Builder
annotazione, si afferma alla linea 55 e 56 nel codice di esempio per Vanilla Java (https://projectlombok.org/features/Builder.html) che dovrei guardare l'esempio di codice per @Singular
(https://projectlombok.org/features/Singular-snippet.html). Alla riga 112 nell'esempio Vanilla Java qui, sembra che l'elenco debba essere inizializzato nella lista vuota.
ho controllato, e lo fa in effetti succede se annotare la lista con @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 '[]'.
È questo un bug in Lombok, o c'è qualcosa che sto facendo male? Secondo la documentazione, sembra che l'elenco debba essere inizializzato nella lista vuota in entrambi i casi (poiché il documento @Builder
si riferisce al documento @Singular
).
Sto utilizzando la versione 1.16.6 di Lombok a proposito. – marstran