• ベストアンサー

自クラスをnewしたインスタンスの参照

また、よろしくおねがいします。 あるインスンタンス(A)から別のクラスをnewしてインスタンス(B)を作成し class A{ public A(){} B b = new B(); public hoge(){ System.out.plintln("hoge"); } } class B{ public B(){} A.hoge(); <<= ここから自クラスをnewしたAのhoge()を起動させたい } こんな風にnewされたB側からAのメソッドを動かしたいなんて場合は、どのようにするんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

もう一つ別の方法として、class Bをclass Aの内部クラスにしてしまうという方法があります。 class A { class B { public B() {} void x() { A.this.hoge(); // 内部クラスBのインスタンスからAのインスタンスメソッドを呼ぶ書き方 } } Aの実装以下略 }

dellx1
質問者

お礼

ぬおおありがとうございます。動きました。m(_ _)m

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

一般論として、Bのインスタンスは自分をnewしたのが誰なのかを知る方法がありません。 どのAのインスタンスがnewしたのか、Bに教えてあげる必要があります。 class B { private A oya; public B(A a) { oya = a; } } AのインスタンスがBをnewするときには B b = new B(this); とします。 こうすればoya.hoge()のようにしてAのインスタンスメソッドを呼べます。

関連するQ&A