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 は、ソケット接続ごとに 1 つのスレッドで、複数のスレッドを起動します。複数のクライアント。だから私はしなければなりません。

  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メソッドであるため、作成するまでインスタンスはありません。MainClassstatic

インスタンスメソッド内で使用できます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 に答える