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

Java8 Stream生成Account列表异常:未正确填充主属性问题

解决Account对象列表主属性缺失问题

核心修复思路

遍历linkedDetails集合时,每个生成的Account对象不仅要绑定当前linkedDetail的专属属性,还要从accountRequest中同步复制accountId、custId、custName、comments、status这些主属性,确保每个Account实例的属性完整。

示例代码(Java场景)

假设使用普通POJO处理,先定义Account类结构:

public class Account {
    // 主属性
    private String accountId;
    private String custId;
    private String custName;
    private String comments;
    private String status;
    // linkedDetails专属属性
    private String custCode;
    private LocalDate startOn;
    private String loanType;

    // 生成getter、setter方法,或使用Lombok的@Data简化
}

然后编写转换逻辑:

import java.util.ArrayList;
import java.util.List;

public class AccountConverter {
    public List<Account> convertToAccountList(AccountRequest accountRequest) {
        List<Account> accountList = new ArrayList<>();
        if (accountRequest == null || accountRequest.getLinkedDetails() == null) {
            return accountList;
        }

        // 提前提取主属性,避免循环中重复调用getter
        String accountId = accountRequest.getAccountId();
        String custId = accountRequest.getCustId();
        String custName = accountRequest.getCustName();
        String comments = accountRequest.getComments();
        String status = accountRequest.getStatus();

        // 遍历每个linkedDetail生成完整Account对象
        for (LinkedDetail detail : accountRequest.getLinkedDetails()) {
            Account account = new Account();
            // 填充主属性
            account.setAccountId(accountId);
            account.setCustId(custId);
            account.setCustName(custName);
            account.setComments(comments);
            account.setStatus(status);
            // 填充linkedDetail专属属性
            account.setCustCode(detail.getCustCode());
            account.setStartOn(detail.getStartOn());
            account.setLoanType(detail.getLoanType());

            accountList.add(account);
        }
        return accountList;
    }
}

额外优化建议

  • 如果使用Lombok的@Builder注解,可简化对象初始化代码,避免大量setter调用
  • 注意startOn这类日期属性的JSON反序列化适配,可通过Jackson的@JsonFormat(pattern = "yyyy-MM-dd")注解确保格式正确
  • 添加空值校验,避免因accountRequest或linkedDetails为空导致空指针异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:31:03