Java获取方法的调用者

public static void main(String[] args) {
        method1();
    }

    static void method1() {
        method2();
    }

    static void method2() {
        method3();
    }

    static void method3() {
        printCallingInfo();
    }

    static void printCallingInfo() {
        // 第一个为当前线程,第二个为当前方法,第三个为调用方法...(依次套娃)
        StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
        if (stackTraceElements.length >= 3) {
            System.out.println("printCallingInfo方法被" + stackTraceElements[2].getClassName() + "类的" + 										stackTraceElements[2].getMethodName() + "方法调用");
        } else {
            System.out.println("没有足够的堆栈跟踪元素");
        }
    }
posted @ 2024-02-07 14:16  喵师傅  阅读(136)  评论(0编辑  收藏  举报