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