Book book = new Book();
while(rs.next()){
    book.setId(rs.getInt("id"));
    book.setIsbn(rs.getString("isbn"));
    book.setTitle(rs.getString("title"));
    book.setCopyright(rs.getString("copyright"));
    book.setEditionnumber(rs.getInt("editionNumber"));
    book.setImagefile(rs.getString("imageFile"));
    book.setPrice(rs.getDouble("price"));
    book.setPublisherid(rs.getString("publisherID"));
    System.out.println("bookdao lsdjfldsjfld"+book.getImagefile());
    lists.add(book);
}
return  lists;
--------------------------------------------------------------
Book book = null;
while(rs.next()){
    book = new Book();
    book.setId(rs.getInt("id"));
    book.setIsbn(rs.getString("isbn"));
    book.setTitle(rs.getString("title"));
    book.setCopyright(rs.getString("copyright"));
    book.setEditionnumber(rs.getInt("editionNumber"));
    book.setImagefile(rs.getString("imageFile"));
    book.setPrice(rs.getDouble("price"));
    book.setPublisherid(rs.getString("publisherID"));
    System.out.println("bookdao lsdjfldsjfld"+book.getImagefile());
    lists.add(book);
    book = null;
}
return  lists;对于以上两种方式处理的代码,结果却不同。令我疑惑的是,每次System.out.println的值是不同的,但add到list后,
所有的book都是相同的值,就好象是,在add到list时,add的是同一个book对象,这是为什么?

解决方案 »

  1.   


    while(rs.next()){
    Book book = new Book();
      book.setId(rs.getInt("id"));
      book.setIsbn(rs.getString("isbn")); 
      book.setTitle(rs.getString("title"));
      book.setCopyright(rs.getString("copyright"));
      book.setEditionnumber(rs.getInt("editionNumber"));
      book.setImagefile(rs.getString("imageFile"));
      book.setPrice(rs.getDouble("price"));
      book.setPublisherid(rs.getString("publisherID"));
      System.out.println("bookdao lsdjfldsjfld"+book.getImagefile());
      lists.add(book);
    }
    return lists;
      

  2.   

    推荐使用Book book = null;
    while(rs.next()){
      book = new Book();
      book.setId(rs.getInt("id"));
      book.setIsbn(rs.getString("isbn"));
      book.setTitle(rs.getString("title"));
      book.setCopyright(rs.getString("copyright"));
      book.setEditionnumber(rs.getInt("editionNumber"));
      book.setImagefile(rs.getString("imageFile"));
      book.setPrice(rs.getDouble("price"));
      book.setPublisherid(rs.getString("publisherID"));
      System.out.println("bookdao lsdjfldsjfld"+book.getImagefile());
      lists.add(book);
      book = null;
    }
    return lists;这种
      

  3.   

    第一种book都是同一个对象,最后值当然都一样,你的第二种写法应该是对的吧
      

  4.   

    但每次 System.out.println("bookdao lsdjfldsjfld"+book.getImagefile());
    打印出来的属性值都是不一样的啊,就算是同一个对象 ,但我们已经修改了他的属性值啊?
    但最后,lists中,存放的所有对象,他们都有相同的属性值。求解释……