public class FooClass {
BarClass bar = null;
int a = 0;
int b = 1;
int c = 2;
public FooClass(BarClass bar) {
this.bar = bar;
bar.setFoo(this);
}
}
public class BarClass {
FooClass foo = null;
public BarClass(){}
public void setFoo(FooClass foo) {
this.foo = foo;
}
}
...别处
BarClass theBar = new BarClass();
FooClass theFoo = new FooClass(theBar);
theFoo.a //should be 0
theBar.foo.a = 234; //I change the variable through theBar. Imagine all the variables are private and there are getters/setters.
theFoo.a //should be 234 <-----
如何将对象传递给另一个类,进行更改,并将更改显示在第一个对象的原始实例中?
或
如何创建一个循环,其中一个类的更改反映在另一个类中?
答案 0 :(得分:5)
这已经是对象在Java中的运作方式。您的代码已经完成了您想要的任务。
当您将theBar
传递给FooClass
构造函数时,会将theBar
的值(引用)传递给BarClass
对象。 (theBar
本身是按值传递的 - 如果你在foo = new FooClass();
构造函数中写了BarClass
,那么就不会改变theBar
引用的对象.Java是严格传递的-value,只是值通常是引用。)
使用theBar.foo.a
更改该对象中的值时,使用a
再次查看theFoo.a
的值将会看到更新后的值。
基本上,Java不会复制对象,除非你真的要求它。