Stacktrace 또는 Reflection을 사용하여 메서드 호출자 찾기
메서드 호출자를 찾는 것은 복잡한 코드 기반을 디버깅하고 이해하는 데 필수적일 수 있습니다. 이 문서에서는 호출 메서드를 식별하는 두 가지 기술인 스택 추적과 리플렉션을 살펴봅니다.
Stacktrace 사용
Stacktrace는 현재 메서드 호출 스택에 대한 기록을 제공합니다. 스택 추적에 액세스하려면 다음 코드를 사용할 수 있습니다.
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
Javadocs에 따르면 "배열의 마지막 요소는 스택의 맨 아래를 나타내며, 이는 시퀀스에서 가장 최근 메서드 호출입니다. ."
각 StackTraceElement 객체는 클래스(getClassName()), 파일 이름(getFileName()), 줄 번호에 대한 정보를 검색하는 메서드를 제공합니다. (getLineNumber()) 및 메서드 이름(getMethodName()).
메서드 호출자를 얻으려면 스택 추적 요소를 분석해야 합니다. 일반적으로 관련 호출자는 현재 메서드 아래 하나 또는 두 개의 인덱스입니다(예: stackTraceElements[1] 또는 stackTraceElements[2]).
Reflection 사용
Reflection 런타임에 객체와 클래스를 검사하고 조작할 수 있습니다. 리플렉션을 사용하여 호출 메서드를 나타내는 Method 개체에 액세스할 수 있습니다. 예는 다음과 같습니다.
Method currentMethod = new Object() { }.getClass().getEnclosingMethod();
getCurrentMethod() 도우미 메서드는 바깥쪽 메서드 계층 구조를 순회하여 호출 메서드를 제공할 수 있습니다.
결론
스택 추적과 리플렉션 모두 메서드 호출자를 찾는 효과적인 방법을 제공합니다. Stacktrace는 호출 스택에 대한 직접적인 액세스를 제공하는 반면, 리플렉션은 Method 객체를 통해 보다 유연한 접근 방식을 제공합니다. 디버깅 및 분석 요구 사항에 가장 적합한 기술을 결정하려면 이러한 기술을 실험해 보십시오.
위 내용은 Stacktrace 또는 Reflection을 사용하여 메서드 호출자를 어떻게 찾을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!