sun.reflect.Reflection.getCallerClass替代方案

Sri*_*nda 10 java stack-trace

如何使用堆栈跟踪或反射找到方法的调用者? (因为我没有足够的声誉在那里发表评论)

由于sun.reflect.Reflection.getCallerClass已在jdk8中删除,有什么可以替代?

如何使用sun.misc.SharedSecrets

    JavaLangAccess access = SharedSecrets.getJavaLangAccess();
    Throwable throwable = new Throwable();
    int depth = access.getStackTraceDepth(throwable);
    StackTraceElement frame = access.getStackTraceElement(throwable, depth);
Run Code Online (Sandbox Code Playgroud)

Sri*_*nda 4

正如上面评论中所讨论的。我得出的结论是 SharedSecrets.getJavaLangAccess()在短期内使用上面解释的方法,但sun.*完全消除对包的依赖作为长期解决方案。

基本上我正在改变我的需求本身,以便它不需要getCallerClass功能。