Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以确定谁在Java中调用函数或实例化类吗?_Java_Language Features - Fatal编程技术网

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

我可以确定谁在Java中调用函数或实例化类吗?,java,language-features,Java,Language Features,可能重复: 我只是好奇。我有时会请求这个特性,但后来我用更多的代码解决了它。(调用类在调用该方法时说出了它的名称)您可以使用“假异常”来完成,尽管这个技巧感觉有点脏 try { throw new RuntimeException(); } catch (RuntimeException e) { System.out.println(e.getStackTrace()[1]); } getStackTrace返回一个StackTrac

可能重复:


我只是好奇。我有时会请求这个特性,但后来我用更多的代码解决了它。(调用类在调用该方法时说出了它的名称)

您可以使用“假异常”来完成,尽管这个技巧感觉有点脏

    try {
        throw new RuntimeException();
    } catch (RuntimeException e) {
        System.out.println(e.getStackTrace()[1]);
    }
getStackTrace
返回一个
StackTraceElement
对象数组,您可以查看如何处理它们

private Class getCallingClass() {
    return new SecurityManager() {
       protected Class[] getClassContext(){return super.getClassContext();} 
    }.getClassContext()[2];
}  


你不需要扔它,检查我的answer@org.life.java谢谢,很高兴知道我认为你甚至不需要调用
fillInStackTrace
:根据,构造函数为你调用它。Thx为答案。我也可以关闭线程,因为重复。
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)");
    }
}