向列表添加最后一个对象时原有对象被意外修改的问题排查与解决求助
向列表添加最后一个对象时原有对象被意外修改的问题排查与解决求助
各位大佬好,我最近碰到一个百思不得其解的问题:我在循环里创建对象、设置属性,然后把对象加入列表,结果每次添加最后一个对象的时候,之前已经放进列表里的所有对象都被莫名其妙地修改了!
具体情况是这样的:我有个成员列表tDat,在每次循环里,一开始我会把它设为空,然后在最后一次循环时给它设成非空的数据。结果就发现,原本catList里那些tDat是空的旧对象,现在全都变成和最后一个对象一样的非空tDat了。
我实在摸不着头脑,不知道自己哪里写错了,想请教下大家这是什么原因,该怎么解决这个问题?
附上我的部分代码:
List<String> tDat = new ArrayList<>(); List<String> ans = new ArrayList<>(); String a = " "; String b = " "; String c= " "; String d= " "; String e= " "; List<Category> catList = new ArrayList<>(); Set<String> set = new HashSet<>(); for(MainEvent event : mainEventList) { Category abs = ... // 这里是我创建Category对象的代码 // 中间是设置a、b、c、d、e这些属性的逻辑 abs.setTDat(tDat); // 假设我是这样给Category对象设置tDat属性的 // 其他属性设置操作... catList.add(abs); // 每次循环结束我会清空tDat tDat.clear(); }
备注:内容来源于stack exchange,提问作者mukul anand
相关产品推荐
相关产品推荐

