使用反射之坑,集合存入数据总是会覆盖前面的所有数据

使用反射之坑,集合存入数据总是会覆盖前面的所有数据

今天使用反射将父类的属性强转为子类,然后再将子类存入到一个集合,但是出现一个特别特别奇怪的现象,就是集合每次存入一个数据就会将前面所有的数据覆盖掉

  1. 第一次存入1, 集合{1}
  2. 第二次存入2 集合{2,2}
  3. 第三次存入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循环只是改变最后一次地址的数据,所以改变一个,就会覆盖前面的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值