スタックトレースまたはリフレクションを使用してメソッドの呼び出し元を見つける
メソッドの呼び出し元を見つけることは、複雑なコード ベースをデバッグして理解するために不可欠です。この記事では、呼び出しメソッドを識別するための 2 つの手法、スタックトレースとリフレクションの使用について説明します。
スタックトレースの使用
スタックトレースは、メソッド呼び出しの現在のスタックの記録を提供します。スタックトレースにアクセスするには、次のコードを使用できます。
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
Javadoc によると、「配列の最後の要素はスタックの一番下を表し、シーケンス内で最も新しいメソッド呼び出しです。」 ."
各 StackTraceElement オブジェクトは、クラス (getClassName())、ファイル名 (getFileName())、行に関する情報を取得するメソッドを提供します。番号 (getLineNumber())、およびメソッド名 (getMethodName())。
メソッドの呼び出し元を取得するには、スタック トレース要素を分析する必要があります。通常、関連する呼び出し元は、現在のメソッドの 1 つまたは 2 つのインデックス下になります (たとえば、stackTraceElements[1] または stackTraceElements[2])。
Reflection の使用
Reflection実行時にオブジェクトとクラスをイントロスペクトして操作できるようになります。リフレクションを使用して、呼び出しメソッドを表す Method オブジェクトにアクセスできます。以下に例を示します。
Method currentMethod = new Object() { }.getClass().getEnclosingMethod();
getCurrentMethod() ヘルパー メソッドは、周囲のメソッド階層をトラバースすることで呼び出しメソッドを提供できます。
結論
スタックトレースとリフレクションはどちらも、メソッドの呼び出し元を見つけるための効果的な方法を提供します。 Stacktrace は呼び出しのスタックへの直接アクセスを提供しますが、リフレクションは Method オブジェクトを介したより柔軟なアプローチを提供します。これらの手法を試して、デバッグと分析のニーズに最も適した手法を決定してください。
以上がスタックトレースまたはリフレクションを使用してメソッドの呼び出し元を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。