2

如何将我所在的类的实例传递给另一个类?我想做的不是工作,必须有更好的方法。

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

3 回答 3

5

像这样:MainExample mainCl = new MainExample();

您的NextClass构造函数需要一个MainExample引用。

该行NextClass nextCl = new NextClass(mainCl);现在应该编译。

于 2013-02-27T07:32:35.037 回答
2

main方法中,在创建之前没有实例,因为它MainClass一个static方法。

在您可以使用的实例this方法中,但在您的情况下,您只需MainExample要先创建一个实例:

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

在实例方法中,您将执行以下操作:

public NextClass createNextClass() {
    return new NextClass(this);
}
于 2013-02-27T07:35:01.183 回答
1

我希望当你的意思是MainClass你指的是类MainExample

如果是这种情况,您不能通过 JVM 隐式使用实例,则必须显式创建一个

MainExample mainCl = new MainExample();
NextClass nextCl = new NextClass(mainCl);
于 2013-02-27T07:39:11.800 回答