Java 学习笔记

所有文章
📖 最新文章 transmittable-thread-local 库 JOOR 反射库 Lombok 库:为你减少样板代码 Slf4j 日志组件的使用 加速maven、gradle依赖下载
📖 Java 基础 安装 第一个程序 使用 UTF-8 编写代码 空值 null 正则表达式 线程 日期/时间 匿名类 枚举 ThreadLocal 线程本地变量 动态代理 jar 命令

Java : 获取当前执行的函数名


方式1: 使用函数内部类/匿名类对象的 getEnclosingMethod 方法

public class MethodNameTest {

    public static void testMethod() {
        String methodName = new Object() {}
                .getClass()
                .getEnclosingMethod()
                .getName();
        System.out.println(methodName);
    }

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

}

运行结果:

testMethod

方式2: 从异常堆栈跟踪中获取方法名

public class MethodNameTest {

    public static void testMethod() {
        StackTraceElement[] stackTrace = new Throwable().getStackTrace();
        String methodName = stackTrace[0].getMethodName();
        System.out.println(methodName);
    }

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

}

运行结果:

testMethod

方式3: 从线程堆栈跟踪中获取方法名

public class MethodNameTest {

    public static void testMethod() {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        String methodName = stackTrace[1].getMethodName();
        System.out.println(methodName);
    }

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

}

运行结果:

testMethod

参考


( 本文完 )

文章目录