增強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
