java - que - Lombok @Builder no está inicializando colecciones
que es project lombok (1)
Solo cuando usa @Singular
, obtiene una lista vacía. En la página de documentación del Builder dice:
... con la anotación
@Singular
, lombok tratará ese nodo generador como una colección.
Sin el @Singular
, lombok lo trata como cualquier otro objeto. Así que será null
lugar de una colección vacía.
Divulgación: Soy un desarrollador de Lombok
Estoy usando las @Data
de @Data
y @Builder
Lombok de esta manera:
@Data
@Builder(toBuilder = true)
class Movie {
// Some other fields here.
private final List<Actor> actors;
}
Cuando creo una nueva Movie
con el constructor, sin especificar ningún actor, esperaría que Lombok inicialice mi Lista a Collections.emptyList()
. Pero esto no sucede:
List<Actor> actors = Movie.builder().build().getActors();
System.out.println(actors); // Prints ''null''.
En la documentación para la anotación de @Builder
, se indica en las líneas 55 y 56 en el ejemplo de código para Vanilla Java ( https://projectlombok.org/features/Builder.html ) que debería ver el ejemplo de código para @Singular
( https://projectlombok.org/features/Singular-snippet.html ). En la línea 112 en el ejemplo de Vanilla Java aquí, parece que la lista debería inicializarse a la lista vacía.
Lo verifiqué, y de hecho sucede si @Singular
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 ''[]''.
¿Es esto un error en Lombok, o hay algo que estoy haciendo mal? Según la documentación, parece que la lista debería inicializarse a la lista vacía en ambos casos (porque el documento @Builder
refiere al documento @Singular
).