Stacktrace 또는 Reflection을 사용하여 메서드 호출자 찾기
Java에서는 스택 추적 또는 리플렉션을 통해 메서드 호출자를 확인할 수 있습니다. .
사용 Stacktrace
Thread.currentThread().getStackTrace() 메서드는 현재 스레드의 스택 추적 요소를 나타내는 StackTraceElement 객체의 배열을 반환합니다. 배열의 마지막 요소는 스택의 맨 아래 또는 가장 최근의 메서드 호출을 나타냅니다.
각 StackTraceElement 객체는 클래스 이름(getClassName()), 파일 이름(getFileName()), 행에 대한 액세스를 제공합니다. 해당 메소드 호출의 번호(getLineNumber()) 및 메소드 이름(getMethodName())입니다. 호출자를 확인하려면 일반적으로 StackTraceElement 배열의 인덱스 1 또는 2에 있는 요소를 사용할 수 있습니다.
Reflection 사용
Reflection은 호출자를 식별하는 또 다른 접근 방식을 제공합니다. Class#getDeclaringClass() 메서드는 지정된 메서드를 선언한 클래스를 반환합니다. 이는 현재 스택 추적에 관계없이 호출 메서드의 클래스를 얻으려는 경우 유용할 수 있습니다.
예
다음은 호출자를 찾기 위해 stacktrace를 사용하는 예입니다. 현재의 방법:
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); if (stackTraceElements.length > 1) { StackTraceElement caller = stackTraceElements[1]; System.out.println("Caller: " + caller.getClassName() + "." + caller.getMethodName()); }
고려 사항
위 내용은 스택 추적 또는 리플렉션을 사용하여 Java 메서드의 호출자를 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!