获取方法调用者的行号?

nul*_*dev 5 java debugging logging line-numbers

有没有办法在Java中获取方法调用者的行号?我不想抛出异常.我是否必须使用堆栈跟踪?有没有办法以便宜的方式做到这一点?

编辑:澄清一下,我不想要调用者类的行号.我想要调用方法的确切行.

Tim*_*Tim 12

Aasmund提供的答案有效,但您最好使用

Thread.getStackTrace()不是Exception.getStackTrace(),因为你不是在异常真正感兴趣.

实际上,它不会有太大的区别,但是你的代码会更清楚地反映你的意图.

int callersLineNumber = Thread.currentThread().getStackTrace()[1].getLineNumber();
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将显示当前方法的行号。如果要在调用该方法的行号,则需要使用`getStackTrace()[2]`。 (2认同)