ホームページ > Java > &#&チュートリアル > スタック トレースまたはリフレクションを使用して Java メソッドの呼び出し元を見つけるにはどうすればよいですか?

スタック トレースまたはリフレクションを使用して Java メソッドの呼び出し元を見つけるにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-21 18:33:15
オリジナル
586 人が閲覧しました

How Can I Find the Caller of a Java Method Using Stack Trace or Reflection?

スタックトレースまたはリフレクションを使用したメソッドの呼び出し元の検索

Java では、メソッドの呼び出し元をスタックトレースまたはリフレクションを通じて特定できます。 .

を使用するStacktrace

Thread.currentThread().getStackTrace() メソッドは、現在のスレッドのスタック トレース要素を表す StackTraceElement オブジェクトの配列を返します。配列の最後の要素は、スタックの一番下、つまり最も最近のメソッド呼び出しを表します。

各 StackTraceElement オブジェクトは、クラス名 (getClassName())、ファイル名 (getFileName())、行へのアクセスを提供します。対応するメソッド呼び出しの番号 (getLineNumber()) およびメソッド名 (getMethodName())。呼び出し元を特定するには、通常、StackTraceElement 配列のインデックス 1 または 2 の要素を使用します。

Reflection の使用

Reflection は、呼び出し元を識別するための別のアプローチを提供します。 Class#getDeclaringClass() メソッドは、指定されたメソッドを宣言したクラスを返します。これは、現在のスタック トレースに関係なく呼び出しメソッドのクラスを取得したい場合に便利です。

スタックトレースを使用して呼び出し元を検索する例を次に示します。現在のメソッド:

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
if (stackTraceElements.length > 1) {
    StackTraceElement caller = stackTraceElements[1];
    System.out.println("Caller: " + caller.getClassName() + "." + caller.getMethodName());
}
ログイン後にコピー

考慮事項

  • スタック トレース内の呼び出し元のインデックスは、呼び出しコンテキストによって異なる場合があります。
  • Android など一部の環境ではリフレクションを利用できない場合があります。

以上がスタック トレースまたはリフレクションを使用して Java メソッドの呼び出し元を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート