Если это возможно в Java вообще (который я считаю, дает вам копию из ссылки, но я читал противоречивую информацию, и теперь оставаться немного запутанный)
Возможно, вы привыкли использовать такие языки, как C, которые рассматривают память как один гигантский массив и которые используют указатели (и указатели на указатели) к структурам данных. Java отличается от C использованием ссылок (вместо указателей) и объектов (вместо структур).
Аналоговые указатели в Java являются ссылочной переменной , которая хранит ссылку на объект. Значение ссылочной переменной является указателем, но в Java вы никогда не используете значение указателя, а только объект, к которому он относится.
Если класс определен следующим образом:
public class Bar {
private Foo fooRef;
public Bar(Foo foo) {
this.fooRef = foo;
}
:
:
}
Обратите внимание, что Bar
определяется иметь изменяемое поле экземпляра, fooRef
который будет содержать ссылку на объект типа Foo
.
Ниже будет инстанцирует три экземпляра Bar
, каждый со ссылкой на тот же Foo
объект:
Foo myFoo = new Foo();
Bar bar1 = new Bar(myFoo);
Bar bar2 = new Bar(myFoo);
Bar bar3 = new Bar(myFoo);
Поскольку поле экземпляра, fooRef
является изменяемым, объект, который содержит это может быть мутировано любым который имеет доступ к полю. Это позволяет использовать побочные эффекты (хотя изменяемые поля представляют особую озабоченность при параллельном программировании).
'bar1.field = foo; bar2.field = foo; bar3.field = foo; ' –
Передайте' Foo foo' как аргумент метода в 'Bar' для получения переменной' Foo'. Затем у вас будет копия ссылки, хранящейся в 'Bar', и любой экземпляр' Bar' может изменить состояние этого 'Foo' (если возможно). Если вы спрашиваете, может ли какой-либо экземпляр «Bar» заменить ссылку на объект в «Foo» для других экземпляров «Bar», это невозможно, поскольку Java проходит по значению. –
Если вы можете предоставить немного более подробную информацию о вашем случае использования, это может быть очевидно на то, что вам нужно. Является ли Foo синглтон? Является ли Bar состоящим из экземпляра Foo? Немного больше помощи в том, что вы ищете, может помочь дать лучший ответ. –