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 ).