2016-04-13 53 views
0

如果我有2個對象如何綁定兩個對象的引用?

Foo foo; 
Foo bar = foo; 

它們都指向最初爲空。

如果富獲取的初始化

foo = new Foo(); 

欄引用空,但我想它 被綁定到foo。

因此,foo引用 的每個更改都會使條形引用相同。

是否有辦法來自動 讓巴都指向同一個地址 FOO,

即使它改變或者我有 手動調用它呢?

foo = new Foo(); 
bar = foo; 
+1

「他們應該都指向foo的酒吧,但仍指向空。」 - 不,他們不應該。 – f1sh

+0

我希望他們指向相同的參考 – jam

+1

@jam你不能。它們都是引用,所以它們指向對象。你需要圍繞此設計。 – Kayaman

回答

1

您可以通過創建類似於指針類的東西來使用解決方法。

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 
1

兩個foobar不是真正的對象,但對象的引用。

在您最初的聲明中,都設置爲undefined,或者更準確地說是foo未定義,並要設置bar爲相同的值。但是,即使您初始化了foo,答案也是一樣的。

當您將foo的值設置爲新對象(new Foo)時,您仍然未定義bar

所以答案是肯定的,你必須手動完成。

0

Java是通過值的,而不是通過引用傳遞。 bar的引用不應該與foo相同

相關問題