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

Java如何为POJO类的List类型属性调用set方法正确赋值

问题解决方案

你之前自定义的嵌套了Citizenship内部类的Citizenships类在当前业务场景下属于多余定义,StudentPersonalData类中citizenships属性的类型是List<String>,因此setCitizenships方法的入参必须是元素为国籍编码字符串的List集合,根据使用场景可以选以下几种写法:

1. 固定国籍列表(不需要后续增删元素)

直接用Arrays.asList()把国籍编码包成List传入即可,单国籍、多国籍场景都适用:

  • 单国籍(对应JSON结构"citizenships": ["IN"]):
import java.util.Arrays;

// 单国籍赋值
st1.setCitizenships(Arrays.asList("IN"));
  • 多国籍(对应JSON结构"citizenships": ["IN","FR"]):
// 多国籍赋值
st1.setCitizenships(Arrays.asList("IN", "FR"));

注意:Arrays.asList()返回的是固定长度的列表,不支持后续调用add()/remove()等修改列表长度的方法,强行调用会抛出UnsupportedOperationException。

2. 需要动态调整国籍列表(后续可能增删国籍)

用ArrayList包一层,创建可变长度的列表再传入:

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

// 先初始化带初始国籍的可变列表
List<String> citizenships = new ArrayList<>(Arrays.asList("IN"));
// 后续需要新增国籍直接操作列表即可
citizenships.add("FR");
// 完成赋值
st1.setCitizenships(citizenships);

注意事项

不要尝试往列表里传入你之前定义的空Citizenship类实例,citizenships是字符串类型的List,传入自定义对象会直接触发类型不匹配的编译错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:16:00