如何使用java中的builder()将第二个元素添加到请求正文中的列表?

问题描述 投票:0回答:1

我在使用 dto 创建请求时遇到问题。我使用 singletonList 在项目列表中包含一个元素。我该怎么做才能将第二个项目添加到请求正文中的项目列表中?

request dto:

public class RmaNewRequestDTO {
    @JsonProperty("return")
    Return returnData;
    Order order;
    Store store;
    List<Items> items;

    (...)

    @Data
    @Builder
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Items {
        int orderItemId, qtyRequested, resolution;
    }
}

request body:

        RmaNewRequestDTO rmaNewRequest = RmaNewRequestDTO.builder()
                        (...)
                .items(Collections.singletonList(RmaNewRequestDTO.Items.builder()
                        .orderItemId(itemOrderId.get(0))
                        .qtyRequested(firstProduct.getQuantity())
                        .resolution(RESOLUTION_ID_REFUND)
                        .productSku(firstProduct.getSku())
                        .ean(firstProduct.getEan())
                        .build()))

                        (...)

                .build();
java request lombok
1个回答
0
投票

您可以将

@Singular
放在任何集合字段上。 Lombok 现在将创建两个 adder 方法,允许您将元素添加到集合中,可以一个一个地添加,也可以一次添加多个元素。

在你的情况下,它看起来像这样:

public class RmaNewRequestDTO {
...
    @Singular List<Items> items;
...

您现在可以按如下方式使用它:

RmaNewRequestDTO.builder()
        .item(myFirstItem)
        .item(mySecondItem)
        ...

请注意,这两种方法都只添加元素,即使是具有集合类型参数的方法也是如此。如果您想重置(清空)列表,请使用

clear
方法。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.