스택 추적 또는 리플렉션을 통해 메서드 호출자 복구
메서드 호출자를 식별하는 기능은 다양한 디버깅에서 매우 중요할 수 있습니다. 또는 추적 시나리오. 다행스럽게도 Java는 이 문제를 해결하기 위해 스택 추적과 리플렉션이라는 두 가지 기본 접근 방식을 제공합니다.
Stack Trace
Thread.currentThread().getStackTrace() 메서드는 배열을 반환합니다. StackTraceElement 개체의 Java 문서에 따르면 이 배열의 마지막 요소는 가장 최근 메서드 호출인 스택의 맨 아래를 나타냅니다.
예:
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
각 StackTraceElement는 스택에 대한 정보를 얻기 위한 여러 도우미 메서드를 제공합니다. 프레임:
특정 사용 사례에 따라 실험을 통해 어떤 요소를 결정해야 할 수도 있습니다. stackTraceElements 배열은 원하는 호출자에 해당합니다. 일반적으로 인덱스 [1] 또는 [2]에 있습니다.
리플렉션
또는 리플렉션을 사용하여 발신자 정보에 액세스할 수도 있습니다. 원하는 클래스에서 getDeclaredMethod 메소드를 호출하면 관심 있는 메소드를 나타내는 Method 객체를 검색할 수 있습니다. 그런 다음 Method 객체의 getClass 메소드를 사용하여 선언 클래스에 대한 Class 객체를 얻을 수 있습니다. 마지막으로 Class 객체의 getName 메소드를 사용하면 호출 메소드의 클래스 이름을 확인할 수 있습니다.
예:
Class<?> declaringClass = method.getDeclaringClass(); String callerClassName = declaringClass.getName();
스택 추적 중에서 선택 반영은 원하는 세분성 수준 및 기타 요인에 따라 달라집니다. 그러나 두 접근 방식 모두 Java에서 메소드 호출자를 추적하기 위한 효과적인 메커니즘을 제공합니다.
위 내용은 스택 추적 또는 리플렉션을 사용하여 Java 메서드 호출자를 어떻게 복구할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!