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

Java 有没有比解析堆栈跟踪更好的方法来获取当前正在运行或正在调用的方法?,java,methods,java-threads,Java,Methods,Java Threads,历史方法一直是解析Thread.currentThread().getStackTrace()的输出,但是自从Java8以来发生了很多变化(比如方法句柄),我不确定现在是否有更好的方法 如果有帮助,我在这里的具体目标是,如果可能的话,根据调用方法上的注释进行操作。Java9引入了StackWalker API 最好将StackWalker实例存储在私有静态最终字段中: class SomeClass { private static final StackWalker SW = Stac

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


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

Java9引入了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
    }
}
class-SomeClass{
私有静态最终StackWalker SW=StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_引用);
公共someCallerSensitiveMethod(){
Class caller=SW.getCallerClass();
//用它做点什么,比如检查它的注释
}
}

Java9引入了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
    }
}
class-SomeClass{
私有静态最终StackWalker SW=StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_引用);
公共someCallerSensitiveMethod(){
Class caller=SW.getCallerClass();
//用它做点什么,比如检查它的注释
}
}