Java - создание двух ссылок на один и тот же объект - PullRequest
4 голосов
/ 12 января 2012

Проверьте следующий код:

Object object = new Object();
objectList.add(object);
objectListTwo.add(object);

Есть ли способ заставить оба массива указывать на один и тот же объект, чтобы при изменении object в одном массиве он изменялся в другом?

Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ: Оказывается, мой код выше делает именно это. Проблема была в другом месте в моем коде. Приношу свои извинения за путаницу ...

Ответы [ 2 ]

6 голосов
/ 12 января 2012

Оба списка указывают на один и тот же объект. Java передает ссылку на объект (по значению).

4 голосов
/ 12 января 2012

Зависит от того, что вы подразумеваете под «изменением».Если вы имеете в виду изменение, как при вызове сеттеров и изменении объекта, то эти изменения наблюдаются.Если вы имеете в виду изменение как полное переназначение или перезапись переменной (или ссылки), эти изменения не наблюдаются.

Проще говоря, скажем, у вас есть один объект, один массив.

Foo foo = new Foo();
Foo[] foos = new Foo[1];
foos[0] = foo;

Элемент в массиве и переменная ссылаются на один и тот же Foo.

foo.setBar(7);
int bar = foos[0].getBar(); // will get 7

Внутри массива наблюдается изменение объекта, на который ссылается foo.

foo = new Foo();
foo.setBar(94);
bar = foos[0].getBar(); // will not get 94

Это изменение не наблюдается внутри массива, так как foo переназначен.Его сеттер теперь полностью изменяет другой объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...