我可以确定谁在调用函数或在Java中实例化一个类吗?

One*_*rld 3 java language-features

可能重复:
在Java中,如何使用堆栈跟踪或反射找到方法的调用者?

我只是好奇.我有时会请求该功能,但后来我用更多的代码解决了它.(调用类在调用方法时说出了它的名字)

Jig*_*shi 9

private Class getCallingClass() {
    return new SecurityManager() {
       protected Class[] getClassContext(){return super.getClassContext();} 
    }.getClassContext()[2];
}  
Run Code Online (Sandbox Code Playgroud)

要么

public class Foo {

    public static final void main(final String[] args) {

        test();
    }

    private static void test() {

        Throwable e = new Throwable();

        StackTraceElement[] elements = e.getStackTrace();
        System.out.println(elements.length > 1 ? elements[1].toString() : "(no caller)");
    }
}
Run Code Online (Sandbox Code Playgroud)