我正在向List添加项目,但之后的项目总是会在迭代后被覆盖。
List<CartPojo> cartLists = new ArrayList<CartPojo>();
CartPojo cartItem = new CartPojo();
for(int k=0; k<2; k++){
cartItem.setItemName("name_"+k);
cartLists.add(cartItem);
}
model.addAttribute("cartLists", cartLists);
这会输出: name_1,name_1
预期输出: name_0,name_1
答案 0 :(得分:1)
目前,您在整个迭代过程中对同一个实例进行操作,而不是应该在循环中实例化对象,即:
for(int k=0; k<2; k++){
CartPojo cartItem = new CartPojo();
cartItem.setItemName("name_"+k);
cartLists.add(cartItem);
}
答案 1 :(得分:0)
每次都要继续修改同一个对象。你需要在循环中创建Object。
for(int k=0; k<2; k++){
CartPojo cartItem = new CartPojo();
cartItem.setItemName("name_"+k);
cartLists.add(cartItem);
}
答案 2 :(得分:0)
你没有宣布新的&#34; CartPojo&#34;实例,因此每次在cartItem上执行某些操作时,每次操作时它都是相同的对象。
答案 3 :(得分:0)
只需输入Cartpojo cartItem = new CartPojo();在for循环中
列出cartLists = new ArrayList();
for(int k = 0; k <2; k ++){
CartPojo cartItem = new CartPojo();
cartItem.setItemName( “名_” + K);
cartLists.add(cartItem);
}
答案 4 :(得分:0)
你只需要在循环中每次都创建对象
List<CartPojo> cartLists = new ArrayList<CartPojo>();
for(int k=0; k<2; k++){
CartPojo cartItem = new CartPojo();
cartItem.setItemName("name_"+k);
cartLists.add(cartItem);
}
model.addAttribute("cartLists", cartLists);
和平
答案 5 :(得分:0)
在所有迭代中使用相同的对象。
您应该在每次要创建new
对象时创建一个实例(使用CartPojo
运算符)。
此外,您应该在CartPojo
中提供构造函数:
for(int k=0; k<2; k++){
CartPojo cartItem = new CartPojo("name_"+k);
cartLists.add(cartItem);
}
它使代码更清晰。