使用反射之坑,集合存入数据总是会覆盖前面的所有数据
今天使用反射将父类的属性强转为子类,然后再将子类存入到一个集合,但是出现一个特别特别奇怪的现象,就是集合每次存入一个数据就会将前面所有的数据覆盖掉
- 第一次存入1, 集合{1}
- 第二次存入2 集合{2,2}
- 第三次存入3 集合{3,3,3}
- …
代码如下:
ProductExtension productExtension = new ProductExtension();
for (int i = 0; i < byCid.size(); i++) {//bycid是一个产品实体集合,遍历这个集合,将数据赋值到集合中
//cid是父类对象集合
ProductExtension productExtension1 = (ProductExtension) Change.change(byCid.get(i), productExtension);
// 查询出来的产品对象
System.out.println("*******这是遍历产品对象,并将产品对象添加到产品对象数组中*****" + productExtension1 + "**************这是遍历产品对象,并将产品对象添加到产品对象数组中*****************************");
String s = String.valueOf(byCid.get(i).getImgid());
String s1 = s + ".jpg";
productExtension1.setImage(s1);
// 将产品对象添加到产品对象数组中
extensions.add(productExtension1);//通过调试,这里都是对的,但是打印集合下面就错了
}
System.out.println("这是我打印出来的产品对象数组_____________" + extensions + "+++++++++++这是我打印出来的产品对象数组+++++++++++++++++");
//每次出来都覆盖前面的所有数据,所有数据都错了
尝试了所有的方法,花费了几个小时,终于找到了问题所在,
就是把产品对象定义到了for循环外边,这样每次存入到集合的都是同一个地址,而for循环只是改变最后一次地址的数据,所以改变一个,就会覆盖前面的