Как передать объект между несколькими классами?Джава - PullRequest
2 голосов
/ 24 сентября 2011
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  <-----

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

или

Как сделать цикл, в котором одно изменение в классе отражается в другом классе?

1 Ответ

5 голосов
/ 24 сентября 2011

Это именно то, как объекты работают в Java. Ваш код уже делает то, что вы хотите.

Когда вы передаете theBar в конструктор FooClass, он передает значение theBar, которое является ссылкой , на BarClass объект. (theBar само передается по значению - если вы написали foo = new FooClass(); в конструкторе BarClass, это не изменит того, на какой объект theBar ссылается. Java строго передается по значению, просто значения часто ссылки.)

Когда вы изменяете значение в этом объекте с помощью theBar.foo.a, то при повторном взгляде на значение a с использованием theFoo.a вы увидите обновленное значение.

По сути, Java не копирует объекты, если вы действительно не попросите об этом.

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