实例化的对象和引用...while(**.next()){实例化位置 、、***list.add(实例化的那个对象) }
2017-03-28 10:42
239 查看
public List<NewsCategory> getNewsCategoryList() { List<NewsCategory> newsCategoryList = new ArrayList<NewsCategory>(); String sql ="select * from news_category"; Object[] params = {}; if(this.getConnection()){ ResultSet rs = this.executeSQL(sql, params); try { while(rs.next()){ //如果实例化NewsCategory写在while循环外 ,会导致list里面add进去6条重复数据!!! NewsCategory newsCategory = new NewsCategory(); newsCategory.setId(rs.getInt("id")); newsCategory.setName(rs.getString("name")); newsCategory.setCreateDate(rs.getTimestamp("createDate")); newsCategoryList.add(newsCategory); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ this.closeResource(); } } return newsCategoryList; }
List 的add方法 添加的是 new出来对象的引用变量newsCategory,所以 如果要需要存储不同的对象 ,就要各自用new来实例化。
如果实例化NewsCategory写在while循环外,只是实例化了一个NewsCategory对象
new操作也就是会在堆内存中分配一个对象的内存,引用变量 newsCategory指向这个内存中的对象
所以:List 的add方法增加的是同一个变量 newsCategory,并增加了6次
相关文章推荐
- 实现思想list hashmap性能差别及对象引用之二
- 基础知识提问:关于HashTable和List两个容器Add改变了属性的同一对象的问题
- List<T>.Add(T) 引用类型与值类型
- println打印一个实例化对象的引用
- for+next()实现数组的遍历及while list each 的使用
- Factory 定义一个接口,客户可以使用这个接口创建一个对象.同时,我们还可以控制对那个类进行实例化
- java中容器Vectort用add添加对象是对象引用的问题
- [JAVA] List,对象引用,复制list和赋值
- Java中对对象的操作是引用操作-建立Temp对象是,应该在循环里面new一个新的地址,再使用add添加到集合中去
- Java中list存放的是值还是对象的引用问题
- 声明和实例化-对象引用-对象废除
- 容易马虎的list.add(对象)
- List ADD时去除重复对象代码
- Struts2 页面获取参数 List,Set,Map 及调用函数和实例化对象
- [java.io]关于List对象的引用是自定义类型写入文件
- C#中的对象(类的实例)和引用变量(引用实例的那个变量)问题讨论
- ASPxTreeList 未将对象引用设置到对象的实例
- vs2010 vc++开发引用 ArcEngine9.3 组件和AO对象实例化方法
- java之克隆一个对象(此对象包含list引用)-clone()
- List<?> list= new ArrayList<?>为什么这样写 接口引用指向实现类的对象