获取方法调用者的行号?

Get line number of method caller?

有什么方法可以得到Java中方法调用者的行号吗?我不想抛出异常。我必须使用堆栈跟踪吗?有什么方法可以便宜地做到这一点吗?

编辑:澄清一下,我不想要呼叫者 class 的行号。我想要调用方法的确切行。

您实际上不需要抛出异常; 创建一个就足够了:

int callersLineNumber = new Exception().getStackTrace()[1].getLineNumber();

请注意,这既不需要 try/catch 也不需要 throws 声明。

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

Thread.getStackTrace() 而不是 Exception.getStackTrace(),因为您实际上对异常不感兴趣。

实际上,这不会有太大区别,但您的代码会更清楚地反映您的意图。

int callersLineNumber = Thread.currentThread().getStackTrace()[1].getLineNumber();