- ベストアンサー
自クラスを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のメソッドを動かしたいなんて場合は、どのようにするんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
もう一つ別の方法として、class Bをclass Aの内部クラスにしてしまうという方法があります。 class A { class B { public B() {} void x() { A.this.hoge(); // 内部クラスBのインスタンスからAのインスタンスメソッドを呼ぶ書き方 } } Aの実装以下略 }
その他の回答 (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のインスタンスメソッドを呼べます。
お礼
ぬおおありがとうございます。動きました。m(_ _)m