如何将我所在类的实例传递给另一个类?我想要做的不是工作,必须有更好的方法。
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,以便我可以将观察者附加到observable。使用观察者模式。 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 :(得分:5)
像这样:MainExample mainCl = new MainExample();
您的NextClass
构造函数需要MainExample
引用。
行NextClass nextCl = new NextClass(mainCl);
现在应该编译。
答案 1 :(得分:2)
在main
方法中, 没有MainClass
的实例,直到您创建一个,因为它是static
方法。
在实例方法中,您可以使用this
,但在您的情况下,您只需要首先创建MainExample
的实例:
MainExample mainCl = new MainExample();
NextClass nextCl = new NextClass(mainCl);
在实例方法中,您可以执行以下操作:
public NextClass createNextClass() {
return new NextClass(this);
}
答案 2 :(得分:1)
我希望你的意思是MainClass
你指的是课程MainExample
如果是这样的话 你不必通过JVM隐式提供实例,你必须明确地创建一个
MainExample mainCl = new MainExample();
NextClass nextCl = new NextClass(mainCl);