有没有比解析堆栈跟踪更好的方法来获取当前正在运行或调用的方法



历史方法一直是解析Thread.currentThread().getStackTrace()的输出,但自Java 8以来发生了很多变化(比如方法句柄(,我不确定现在是否有更好的方法。

如果有帮助的话,我在这里的具体目标是,如果可能的话,根据调用方法上的注释进行操作。

Java 9引入了StackWalker API

最佳做法是将您的StackWalker实例存储在私有静态最终字段:

class SomeClass {
private static final StackWalker SW = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
public someCallerSensitiveMethod() {
Class<?> caller = SW.getCallerClass();
// Do something with it, like check it's annotations
}
}

相关内容

最新更新