检查以下代码:
Object object = new Object();
objectList.add(object);
objectListTwo.add(object);
有没有办法让两个数组都指向同一个对象,这样当我在一个数组中更改object
时,它会在另一个数组中发生变化?
感谢您的帮助!
编辑:转过来,我上面的代码就是这么做的。问题在我的代码中的其他地方。我为我的困惑道歉...答案 0 :(得分:6)
两个列表都指向同一个对象。 Java正在传递对象的引用(按值)。
答案 1 :(得分:4)
取决于“改变”的含义。如果你的意思是在调用setter并改变对象时进行更改,则会观察到这些更改。如果您的意思是在完全重新分配或覆盖变量(或引用)时进行更改,则不会观察到这些更改。
简单地说,你有一个对象,一个数组。
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。它的setter现在完全改变了另一个对象。