2014-09-18 2 views
1

Я только начал использовать библиотеки, а не создавать все с нуля, но это вызывает у меня некоторые проблемы, которые я не понимаю.Объекты, не перераспределяющие

У меня есть список ссылок, в котором я добавляю «информацию» - объект с переменными «возраст» и «имя» внутри, но я в замешательстве.

List<ClientInfo> list = new LinkedList<>(); 
    ClientInfo information = new ClientInfo(); 
    information.age = 44; 
    list.add(information); 
    information = new ClientInfo(); // without this line it doesn't work, but i don't get why it shouldn't 
    information.age = 66; 
    list.add(information); 

    int age = list.get(0).age; 
    System.out.println(age); 
    age = list.get(1).age; 
    System.out.println(age); 

Как вы можете видеть выше, это полностью работает, однако, когда я удалить комментируемой линию он больше не работает, он просто добавляет 66 к обоим полям, и я не понимаю, почему, как, конечно, я могу изменить объект информации без необходимости воссоздать узел?

Может ли кто-нибудь сказать мне, почему?

+1

Он не добавляет 66 в оба поля, он перезаписывает поле вашего объекта. Вы не можете хранить два разных значения в поле того же объекта. – RockOnRockOut

+1

Когда вы добавляете эту строку, вы создаете новый объект, который может хранить ваши новые данные. – RockOnRockOut

ответ

3

Без этой линии, у вас есть только один экземпляр разделяемое как возраст 44 и 66 лет - по существу тот же объект был вставлен в два раза, и оба имеют возраст 66, так что переписывает 44.

С этой линией, вы создал второй экземпляр, хотя одна и та же переменная была повторно использована, теперь она указывает/ссылается на другой объект.

+0

Ну, согласитесь с его ответом: p 15 повторений - это больше, чем при голосовании – RockOnRockOut

+0

только что нашел галочку, спасибо: P – Ben

Смежные вопросы