2011-09-24 120 views
2
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; 
    } 
} 

別處......如何在多個類之間傳遞對象? Java的

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 <----- 

我怎麼能傳遞一個對象到另一個類,做出改變,並且有變化出現在第一個對象的原始實例?

我怎樣才能使其中一個變化的一類是體現在其他類中的循環?

+0

你試過了嗎?這正是你想要的方式。 – Howard

回答

5

這已經完全是Java中對象的工作原理。你的代碼已經做到了你想要的。

當您通過theBarFooClass構造,這是合格theBar的價值,這是一個參考BarClass對象。 (theBar本身是按值傳遞 - 如果你在BarClass構造寫道foo = new FooClass();,也不會改變其對象theBar稱爲Java的嚴格傳遞的價值,它只是中的值通常引用。)

使用theBar.foo.a更改該對象內的值時,如果再次使用theFoo.a查看a的值,則會看到更新後的值。

基本上,Java不會複製對象,除非你真的問它。