将类的self实例传递给另一个类,来自该类java

时间:2013-02-27 07:31:09

标签: java class parameter-passing instance

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

 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)

3 个答案:

答案 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);