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
相关产品推荐
相关产品推荐

