質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

解決済

Java メッソドの呼び出し元インスタンスを特定する方法

parupao
parupao

総合スコア11

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

2回答

0評価

0クリップ

267閲覧

投稿2022/05/06 13:37

質問失礼します。
何らかのクラスのメソッド、ここではCクラスの、methodCメソッドとします。
他のクラスのインスタンスから、methodCメソッドが呼び出されたときに、methodCメソッド内で呼び出し元インスタンスを特定したいのですが、方法が分かりません。
コードを載せますので、アドバイスを頂けると幸いです。
@やりたい事 呼び出し元のインスタンスによって処理を分岐させたい。

Java

コード class A { public static void main(String[] args) { C c = new C(); B b1 = new B(); B b2 = new B(); b1.setC(c); b2.setC(c); b1.callC(); b2.callC(); } } class B { C c; void setC(C c) { this.c = c; } void callC() { c.methodC(); } } class C { void methodC() {}   //呼び出し元がb1かb2かで処理を分岐させたい。 } 読んでくださり有難うございます。回答も頂けると助かります。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

parupao

2022/05/06 13:54

情報が不足していました。 追記します。 methodCメソッドには呼び出し元を特定できるような引数は渡せないものとします。 代わりに、 classCのコンストラクタで呼び出し元の候補となるインスタンスを引数として渡します。 class C { B b1; B b2; C(B b1, B b2) { this.b1 = b1; this.b2 = b2; } void methodC() {} }
jimbe

2022/05/06 19:50 編集

質問への追加情報は、質問を編集して追加してください、 > 呼び出し元のインスタンスによって処理を分岐させたい >には呼び出し元を特定できるような引数は渡せない 不可能ではありませんが、設計として良くないと思います。 呼び出し元の何かの情報によって分岐するのであればそれを引数として貰うべきですし、それが呼び出し元自身だと言うのなら、呼び出し元を引数として貰うべきでしょう。 何故このような条件・状況なのでしょうか。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。