下面这段代码循环赋值不成功, votes集合里面的所有对象都是同一个, 这是怎么回事? 如何解决
PreparedStatement psmt;
try {
psmt = (PreparedStatement) conn.prepareStatement(sql);
ResultSet rs = psmt.executeQuery();
while(rs.next()){
vote.setPid(rs.getInt("pid"));
vote.setSid(rs.getInt("sid"));
vote.setVoteDate(rs.getDate("voteDate"));
vote.setVoteIP(rs.getString("voteIP"));
votes.add(vote);
}
//for testing
for(int i=0; i<votes.size(); i++){
System.out.println(votes.get(i));
}
以上代码显示的结果是:

------解决方案--------------------
你用while遍历的时候先new一个vote,否则一直是同一个对象。
------解决方案--------------------
正解
------解决方案--------------------
vote 在内存中地址没变,当然是同一个对象了。需要在while中new
------解决方案--------------------
楼上正解~~
------解决方案--------------------
while(rs.next()){
vote=new vote();
vote.setPid(rs.getInt("pid"));
vote.setSid(rs.getInt("sid"));
vote.setVoteDate(rs.getDate("voteDate"));
vote.setVoteIP(rs.getString("voteIP"));
<span style="color: #FF0000;">votes.add(vote);</span>
}
------解决方案--------------------
进一次循环就要new一个新对象