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

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

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

  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循环只是改变最后一次地址的数据,所以改变一个,就会覆盖前面的


版权声明:本文为qq_41677782原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。