【问题标题】:passing the self instance of class to another class, from that class, java将类的self实例传递给另一个类,从那个类,java
【发布时间】:2013-02-27 07:31:09
【问题描述】:

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

 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)

【问题讨论】:

  • 什么是MainClass? MainExample?
  • 为什么不能用构造函数创建MainExample的实例?
  • 您遇到了哪个错误?在 MainExample 类中定义 NextClass 类有什么特别的原因吗?
  • 使用该操作符获取自己类的实例...
  • 我的问题中输入错误,都是 MainExample,MainClass 没有用作名称

标签: java class parameter-passing instance


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    main 方法中,没有MainClass 的实例,直到您创建一个,因为它是一个static 方法。

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      如果是这样的话 你不能通过 JVM 隐式使用实例,你必须显式创建一个

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-13
        • 1970-01-01
        • 2016-08-27
        • 2018-10-10
        相关资源
        最近更新 更多