如果我有2個對象如何綁定兩個對象的引用?
Foo foo;
Foo bar = foo;
它們都指向最初爲空。
如果富獲取的初始化
foo = new Foo();
欄引用空,但我想它 被綁定到foo。
因此,foo引用 的每個更改都會使條形引用相同。
是否有辦法來自動 讓巴都指向同一個地址 FOO,
即使它改變或者我有 手動調用它呢?
foo = new Foo();
bar = foo;
如果我有2個對象如何綁定兩個對象的引用?
Foo foo;
Foo bar = foo;
它們都指向最初爲空。
如果富獲取的初始化
foo = new Foo();
欄引用空,但我想它 被綁定到foo。
因此,foo引用 的每個更改都會使條形引用相同。
是否有辦法來自動 讓巴都指向同一個地址 FOO,
即使它改變或者我有 手動調用它呢?
foo = new Foo();
bar = foo;
您可以通過創建類似於指針類的東西來使用解決方法。
class Pointer <T> {
T target = null;
Pointer(T target){
this.target = target;
}
static Pointer nullPointer(){
return new Pointer(null);
}
public void setTarget(T target){
this.target = target;
}
public T getTarget(){
return target;
}
}
您可以使用它像這樣:
Pointer<Foo> foo = Pointer.nullPointer(); //target=null
Pointer<Foo> bar = foo; //bar now also "points" to null
foo.setTarget(new Foo()); //now BOTH have the new object as the target
兩個foo
和bar
不是真正的對象,但對象的引用。
在您最初的聲明中,都設置爲undefined,或者更準確地說是foo
未定義,並要設置bar
爲相同的值。但是,即使您初始化了foo
,答案也是一樣的。
當您將foo
的值設置爲新對象(new Foo
)時,您仍然未定義bar
。
所以答案是肯定的,你必須手動完成。
Java是通過值的,而不是通過引用傳遞。 bar的引用不應該與foo相同
「他們應該都指向foo的酒吧,但仍指向空。」 - 不,他們不應該。 – f1sh
我希望他們指向相同的參考 – jam
@jam你不能。它們都是引用,所以它們指向對象。你需要圍繞此設計。 – Kayaman