无法 return 在 Java 中使用生成器列出 <T>

Cannot return List<T> using builder in Java

我有一个 returns CommandDTO.

的保存方法
// ...

final MenuItem saved = menuItemRepository.save(menuItem);
return CommandDTO.builder().uuid(saved.getUuid()).build();

这是我的 CommandDTO:

@Value
@RequiredArgsConstructor
@Builder
public class CommandDTO {
    UUID uuid;
}

另一方面,我更改了接受请求列表而不是单个请求的方法,它应该 return 已保存记录列表为 List<CommandDTO>。但是,我无法创建必要的 return 子句:

final List<MenuItem> saved = menuItemRepository.saveAll(menuItems);

// here I have the uuid list of the saved records
List<UUID> uuidList = saved.stream().map(MenuItem::getUuid)
    .collect(Collectors.toList());

return List<CommandDTO>().builder().uuid(uuidList).build(); // ???

我应该如何 return 将值设为 List<CommandDTO>

UUID 的流上调用 map 来转换它们。

return saved.stream().map(MenuItem::getUuid)
    .map(uuid -> CommandDTO.builder().uuid(uuid).build())
    .collect(Collectors.toList());

您正在尝试将列表传递给接受单个 UUID 的方法。您可以将地图添加到您的流链

List<CommandDTO> resultList = saved.stream()
.map(MenuItem::getUuid)
.map(uuid -> CommandDTO.builder(uuid).build())
.collect(Collectors.toList());

有几种不同的方法可以实现这一点。这不一定是最有效的。希望它回答了你的问题。