You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何使用builder()为请求体的列表添加第二个元素?

如何为RmaNewRequestDTO的items列表添加多个元素

Collections.singletonList() 只能生成仅包含单个元素的不可变列表,无法直接添加第二个元素。要实现多元素列表,你可以采用以下几种实用方案:

方案1:直接构建固定多元素列表(Java 8+)

用Arrays.asList()一次性传入多个Items实例,适合元素数量固定的场景:

RmaNewRequestDTO rmaNewRequest = RmaNewRequestDTO.builder()
        // 其他属性设置...
        .items(Arrays.asList(
                RmaNewRequestDTO.Items.builder()
                        .orderItemId(itemOrderId.get(0))
                        .qtyRequested(firstProduct.getQuantity())
                        .resolution(RESOLUTION_ID_REFUND)
                        .productSku(firstProduct.getSku())
                        .ean(firstProduct.getEan())
                        .build(),
                // 第二个元素
                RmaNewRequestDTO.Items.builder()
                        .orderItemId(itemOrderId.get(1))
                        .qtyRequested(secondProduct.getQuantity())
                        .resolution(RESOLUTION_ID_REFUND)
                        .productSku(secondProduct.getSku())
                        .ean(secondProduct.getEan())
                        .build()
        ))
        // 其他属性设置...
        .build();

注意:Arrays.asList()返回的列表是固定大小的,不能后续调用add()/remove()方法修改。

方案2:使用可变ArrayList(支持动态添加元素)

如果之后可能还要添加更多元素,直接创建ArrayList并逐个添加元素:

// 先创建可变列表
List<RmaNewRequestDTO.Items> itemsList = new ArrayList<>();
// 添加第一个元素
itemsList.add(RmaNewRequestDTO.Items.builder()
        .orderItemId(itemOrderId.get(0))
        .qtyRequested(firstProduct.getQuantity())
        .resolution(RESOLUTION_ID_REFUND)
        .productSku(firstProduct.getSku())
        .ean(firstProduct.getEan())
        .build());
// 添加第二个元素
itemsList.add(RmaNewRequestDTO.Items.builder()
        .orderItemId(itemOrderId.get(1))
        .qtyRequested(secondProduct.getQuantity())
        .resolution(RESOLUTION_ID_REFUND)
        .productSku(secondProduct.getSku())
        .ean(secondProduct.getEan())
        .build());

// 构建请求DTO
RmaNewRequestDTO rmaNewRequest = RmaNewRequestDTO.builder()
        // 其他属性设置...
        .items(itemsList)
        // 其他属性设置...
        .build();

方案3:Java 9+ 简化写法

用List.of()创建不可变多元素列表,若需要可变列表则套一层ArrayList:

// 不可变列表写法
.items(List.of(
    RmaNewRequestDTO.Items.builder().build(), 
    RmaNewRequestDTO.Items.builder().build()
))

// 可变列表写法
.items(new ArrayList<>(List.of(
    RmaNewRequestDTO.Items.builder().build(), 
    RmaNewRequestDTO.Items.builder().build()
)))

内容的提问来源于stack exchange,提问作者asia92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 18:32:09