2014-11-22 25 views
1

假設您有兩個類,一個名爲Main,另一個名爲SecondSecond需要採取的變量從MainMain需要從SecondJava有類可以相互獲取信息

例採取的方法:

public class Main 
{ 
    Second second = new Second(); 
    public int firstInt = 5; 
    second.printThing(); 
} 

public class Second 
{ 
    Main main = new Main(); 
    public void printThing() 
    { 
     System.out.println(main.firstInt); 
    } 
} 

既然你不能做Main main = new Main();Second second = new Second;沒有得到一個堆棧溢出異常,你應去做?

回答

4

假設MainSecond的情況下,應該保持相互之間的引用,你可以通過引用的構造函數:

Main的構造:

public Main (Second second) 
{ 
    this.second = new Second (this); 
} 

Second的構造函數:

public Second (Main main) 
{ 
    this.main = main; 
} 

如果名稱暗示Second取決於Main(即,如果沒有Main的封閉實例,則不存在Second的情況),則可以將Second定義爲內部類Main,在這種情況下,它將隱含地包含封閉類Main的實例。

0

不要使用這種初始化,爲另一個類中的每個類添加一個setter,並在構造之後設置。

Main m = new Main(); 
Second s = new Second(); 
m.setSecond(s); 
s.setMain(m);