今天再写购物车时,读取Cookie放到List集合时出现,集合内容被最后一个元素覆盖。
解决方案:把对象创建放在for循环里面
例如:
class Num{
private String num;
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
}
//出现问题的代码
class test{
public static void main(String[] args) {
List<Num> list = new ArrayList<>();
Num num = new Num();
for (int i = 1; i <= 100; i++) {
//100次循环的一直设置的是同一个的对象的地址值,
//那么100次后所有指向这个地址值的Num对象中的num属性都会变成100
num.setNum(String.valueOf(i));
//这里一直添加的地址值都是同一个,因此对象中的num属性都是100
list.add(num);
}
}
}
//解决方案
class test02{
public static void main(String[] args) {
List<Num> list = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
//100次循环创建100个对象,有100个的地址值,
Num num = new Num();
num.setNum(String.valueOf(i));
list.add(num);
}
}
}