Это именно то, как объекты работают в Java. Ваш код уже делает то, что вы хотите.
Когда вы передаете theBar
в конструктор FooClass
, он передает значение theBar
, которое является ссылкой , на BarClass
объект. (theBar
само передается по значению - если вы написали foo = new FooClass();
в конструкторе BarClass
, это не изменит того, на какой объект theBar
ссылается. Java строго передается по значению, просто значения часто ссылки.)
Когда вы изменяете значение в этом объекте с помощью theBar.foo.a
, то при повторном взгляде на значение a
с использованием theFoo.a
вы увидите обновленное значение.
По сути, Java не копирует объекты, если вы действительно не попросите об этом.