增强for循环赋值并且向list集合里添加元素,每个元素都一样
转载地址:https://www.jianshu.com/p/45c2105ed477
异常:增强for循环赋值并且向list集合里添加元素,每个元素都和最后赋值的一样
原因:构造器写在了外面,每次add()添加的都是同一个元素,更改器方法改变的也是同一个元素的值,list集合最后每个元素都是最后一次赋值生成的值
例如:
1 OrderItem orderItem = new OrderItem(); 2 3 for (CartItem cartItem : cartItemList) { 4 5 orderItem.setOrderItemId(CommonUtils.uuid()); 6 7 orderItem.setQuantity(cartItem.getQuantity()); 8 9 orderItem.setSubTotal(cartItem.getSubTotal()); 10 11 orderItem.setBook(cartItem.getBook()); 12 13 orderItem.setOrder(order); 14 15 orderItemList.add(orderItem) ; 16 17 }
解决方案:把构造器(new的对象)写在增强for循环里面
1 for (CartItem cartItem : cartItemList) { 2 3 OrderItem orderItem = new OrderItem(); 4 5 orderItem.setOrderItemId(CommonUtils.uuid()); 6 7 orderItem.setQuantity(cartItem.getQuantity()); 8 9 orderItem.setSubTotal(cartItem.getSubTotal()); 10 11 orderItem.setBook(cartItem.getBook()); 12 13 orderItem.setOrder(order); 14 15 orderItemList.add(orderItem) ; 16 17 } 18 19