プロが教える店舗&オフィスのセキュリティ対策術

また、よろしくおねがいします。
あるインスンタンス(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のメソッドを動かしたいなんて場合は、どのようにするんでしょうか?

A 回答 (2件)

もう一つ別の方法として、class Bをclass Aの内部クラスにしてしまうという方法があります。



class A {
class B {
public B() {}
void x() {
A.this.hoge(); // 内部クラスBのインスタンスからAのインスタンスメソッドを呼ぶ書き方
}
}
Aの実装以下略
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/25 04:34

一般論として、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のインスタンスメソッドを呼べます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!