Не понимаю почему не изменяется ссылка в коллекции
Есть код:
public List<Contact> findByALL() throws SQLException {
List list = new ArrayList();
try(Connection connection = DaoFactory.getConnection()) {
PreparedStatement ps= connection.prepareStatement("select * from contact");
ResultSet rs = ps.executeQuery();
Contact contact;
while (rs.next()){
contact = new Contact();
contact.setId(rs.getInt("id"));
contact.setFirst_name(rs.getString("first_name"));
contact.setLast_name(rs.getString("last_name"));
list.add(contact);
}
}
В последней строке, мы кладем сcылку на объект,в коллекцию. Далее идем в первую строку цикла и присваиваем ссылке новый объект и снова его ложим в лист. Если ссылка именованный блок памяти указывающий на обьект, то почему листе находятся ссылки на два разных объекта, а не на один и тот же? По моему разумению, второй проход цикла должен перезаписать contact находящийся в листе.
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Потому что вы передаёте листу значение переменной, а не саму переменную. В переменной лежит ссылка на объект и каждый раз когда применяют new значение переменной меняется