Метод получающий имя метода, в котором он был вызван

Нужно написать метод(а), который вызывается внутри другого метода(б) и, например, выводит в консоль имя того метода, в котором был вызван(б). Какой лучший способ реализовать это?


Ответы (1 шт):

Автор решения: StateItPrimitive

Реализуется через получение StackTrace текущего потока исполнения:

public class Example {
    public static void main(String[] args) {
        new Example().callerMethod();
    }

    public void callerMethod() {
        calledMethod();
    }

    public void calledMethod() {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        // 0 - это сам метод getStackTrace();
        // 1 - это вызываемый метод (calledMethod);
        // 2 - это вызывающий (родительский) метод (callerMethod).
        StackTraceElement stackTraceElement = stackTrace[2];
        System.out.println(stackTraceElement.getMethodName()); // callerMethod
    }
}
→ Ссылка