2013-02-27 101 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);