You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现可获取调用方方法名的静态工具类?

获取调用工具类方法的当前方法名称的实现方案

在Java中,可通过线程栈轨迹(StackTrace)实现该需求,从调用链中提取目标方法名称,具体实现如下:

工具类完整代码

import lombok.NoArgsConstructor;

@NoArgsConstructor(access = lombok.AccessLevel.PRIVATE)
public class NameUtils {
    public static String getMethodName() {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        // 栈轨迹索引对应关系:
        // 0: Thread.getStackTrace()
        // 1: NameUtils.getMethodName()
        // 2: 调用当前工具方法的目标方法
        if (stackTrace.length >= 3) {
            return stackTrace[2].getMethodName();
        }
        // 处理栈深度不足的边界情况
        return null;
    }
}

测试示例

public class MyClass {
    public void methodName() {
        String name = NameUtils.getMethodName(); // 返回字符串"methodName"
        System.out.println(name);
    }

    public static void main(String[] args) {
        new MyClass().methodName(); // 控制台输出"methodName"
    }
}

注意事项

  • 该实现依赖JVM的栈轨迹机制,主流JVM(如HotSpot)均兼容,但不同JVM可能存在细微差异。
  • 栈轨迹的获取存在一定性能开销,高频调用场景下需谨慎使用。
  • 若需区分重载方法,可调用stackTrace[2].toString()获取包含参数信息的完整方法签名。

内容的提问来源于stack exchange,提问作者pawello12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:27:11