2013-02-27 102 views
1

如何將我所在的類的實例傳遞給另一個類?我想要做的不是工作,必須有更好的方法。將類的自實例傳遞給另一個類,從那個類java

public class MainExample{ 

     // constructor 
     public MainExample(){ 

     } 

     public static void main(String[] args) { 

     MainExample mainCl = // how to get instance of this class? 

     NextClass nextCl = new NextClass(mainCl); // not working, what to pass?   

     } 

} 

public class NextClass { 

     MainExample mainEx; 

     // constructor 
     public NextClass(MainExample me){ 
     mainEx = me; 

     } 
} 

< < <編輯>>>

這樣做的原因是,我不得不MainExample類的當前實例傳遞給NextClass,這樣我可以附加觀察者可觀察的。使用觀察者模式。 NextClass將啓動多個線程,每個套接字連接一個線程。多個客戶。所以我必須要;

observable <-- (class instance of class that extends observable class) 
    obsever <-- (class instance of class implementing observer) 

    using the addObserver method; 

    observable.addObserver(observer) 
+0

什麼是MainClass? MainExample? – assylias 2013-02-27 07:32:22

+1

爲什麼不能用構造函數創建MainExample的實例? – 2013-02-27 07:34:05

+0

你得到哪個錯誤?在MainExample類中定義NextClass類有什麼特別的原因? – araknoid 2013-02-27 07:34:25

回答

5

像這樣:MainExample mainCl = new MainExample();

NextClass構造函數需要一個MainExample參考。

NextClass nextCl = new NextClass(mainCl);現在應該編譯。

2

main方法,在那裏,直到您創建一個,因爲它是一個static方法沒有MainClass實例。

在一個實例方法,你可以使用this,但在你的情況下,你只需要創建第一的MainExample一個實例:

MainExample mainCl = new MainExample(); 
NextClass nextCl = new NextClass(mainCl); 

在一個實例方法,你會做這樣的事情:

public NextClass createNextClass() { 
    return new NextClass(this); 
} 
1

我希望,當你的意思是MainClass你指的是類MainExample

如果多數民衆贊成的情況下 你由JVM實例不提供隱含必須創建一個明確

MainExample mainCl = new MainExample(); 
NextClass nextCl = new NextClass(mainCl);