質問失礼します。
何らかのクラスのメソッド、ここではCクラスの、methodCメソッドとします。
他のクラスのインスタンスから、methodCメソッドが呼び出されたときに、methodCメソッド内で呼び出し元インスタンスを特定したいのですが、方法が分かりません。
コードを載せますので、アドバイスを頂けると幸いです。
@やりたい事 呼び出し元のインスタンスによって処理を分岐させたい。
Java
1コード 2class A { 3 public static void main(String[] args) { 4 C c = new C(); 5 B b1 = new B(); 6 B b2 = new B(); 7 b1.setC(c); b2.setC(c); 8 b1.callC(); b2.callC(); 9 } 10} 11class B { 12 C c; 13 void setC(C c) { 14 this.c = c; 15 } 16 void callC() { 17 c.methodC(); 18 } 19} 20class C { 21 void methodC() {} 22 //呼び出し元がb1かb2かで処理を分岐させたい。 23} 24 25読んでくださり有難うございます。回答も頂けると助かります。
情報が不足していました。 追記します。
methodCメソッドには呼び出し元を特定できるような引数は渡せないものとします。
代わりに、 classCのコンストラクタで呼び出し元の候補となるインスタンスを引数として渡します。
class C {
B b1; B b2;
C(B b1, B b2) {
this.b1 = b1; this.b2 = b2;
}
void methodC() {}
}
質問への追加情報は、質問を編集して追加してください、
> 呼び出し元のインスタンスによって処理を分岐させたい
>には呼び出し元を特定できるような引数は渡せない
不可能ではありませんが、設計として良くないと思います。
呼び出し元の何かの情報によって分岐するのであればそれを引数として貰うべきですし、それが呼び出し元自身だと言うのなら、呼び出し元を引数として貰うべきでしょう。
何故このような条件・状況なのでしょうか。

回答2件
あなたの回答
tips
プレビュー