Java中如何向List<Data>型LinkedList存入String类型的message值
问题根源
List<Data>的add方法仅接受Data类型实例,直接传入String类型的data.getMessage()会触发类型不匹配编译错误。在不修改集合泛型为List<String>的前提下,只需将需要存储的message值包装为Data实例后再加入集合即可,具体实现分两种常见场景:
场景1:复用已设置消息的传入对象
当前代码中已经执行了data.setMessage(temp),此时传入的data实例的message字段已经是目标存储值,直接将该实例加入集合即可:
public class Write { String temp = "test"; public List<Data> testing(Data data) { data.setMessage(temp); List<Data> dataz = new LinkedList<>(); // 直接添加已设置好message的Data实例 dataz.add(data); return dataz; } }
注意:该方式传入的是原
data的引用,若后续修改原data的message字段,集合内对应元素的值会同步变化。
场景2:生成独立的新Data实例存储消息
如果需要避免原对象被修改的影响,或是要将独立的字符串值单独存入集合,可手动新建Data实例,将目标message值设置到新实例的属性后再添加:
public class Write { String temp = "test"; public List<Data> testing(Data data) { data.setMessage(temp); List<Data> dataz = new LinkedList<>(); // 新建独立Data实例,将需要存储的message字符串写入其属性 Data storageData = new Data(); storageData.setMessage(data.getMessage()); dataz.add(storageData); return dataz; } }
该方式生成的
Data实例与原传入的data互不影响,后续修改任意一方的message字段都不会干扰另一方的存储值。
内容的提问来源于stack exchange,提问作者xiaofeng
相关产品推荐
相关产品推荐

