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

Java中JAXB解组后基于对象属性向列表添加新对象的问题

解决方案

根因

你已经成功创建了新的Student实例,但没有将该实例添加到Registry对象持有的Student列表中,因此改动不会同步到对象结构里。

代码修改

在你标记为(1)的位置下方,新增一行代码将新学生对象添加到当前Registry的学生列表即可:

for (Registry e: entries) {
    // 先判断学生列表是否为空,避免空指针异常(可选但推荐)
    if (e.getStudent() == null) {
        e.setStudent(new ArrayList<>());
    }
    for (Student s : e.getStudent()) {
        if (s.getSchool().equals("Berlin")) {
            Student obj = new Student();
            obj.setFirstName("MP");
            obj.setGender("F");
            obj.setSchool("Berlin");
            // 新增这行代码,把新学生加入列表
            e.getStudent().add(obj);
        }                
    }           
}

可选优化

如果要避免每次都做非空判断,可以直接在Registry类的Student列表属性上直接初始化:

// Registry类中修改属性定义
private List<Student> student = new ArrayList<>();

这个改动也能兼容JAXB解组逻辑,解组时会自动覆盖初始化的空列表。

修改完成后重新运行代码,就能得到你预期的输出结构。


内容的提问来源于stack exchange,提问作者Rakshan Premsagar Kapikad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:21:03