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次