Java或任何其他语言:哪个方法/类调用了我的?

我想在我的方法内部编写一个代码,用于打印哪个方法/类调用了它。

(我的假设是,除了我的方法,我不能改变任何东西。

其他编程语言呢?

编辑:谢谢你们,JavaScript怎么样?蟒?C++?


答案 1

这是Java所特有的。

你可以使用 getStackTrace()。。这将返回一个 StackTraceElements 数组Thread.currentThread().

数组中的第二个元素将是调用方法。

例:

public void methodThatPrintsCaller() {
    StackTraceElement elem = Thread.currentThread.getStackTrace()[2];
    System.out.println(elem);

    // rest of you code
}

答案 2

如果您只想打印出堆栈跟踪并去寻找类,请使用

Thread.dumpStack();

请参阅 API 文档