Не понимаю почему не изменяется ссылка в коллекции

Есть код:

 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 значение переменной меняется

→ Ссылка