有没有方法可以在Java中获取调用者方法的行号?我不想抛出异常。我必须使用堆栈跟踪吗?有没有一种便宜的方法来实现这个目标?
编辑:为了澄清,我不想要调用者类的行号,我想要方法被调用的确切行号。
有没有方法可以在Java中获取调用者方法的行号?我不想抛出异常。我必须使用堆栈跟踪吗?有没有一种便宜的方法来实现这个目标?
编辑:为了澄清,我不想要调用者类的行号,我想要方法被调用的确切行号。
从实际角度来看,这并没有太大的区别,但您的代码将更清晰地反映您的意图。
int callersLineNumber = Thread.currentThread().getStackTrace()[1].getLineNumber();
您不需要真正地抛出异常;只需创建一个即可:
int callersLineNumber = new Exception().getStackTrace()[1].getLineNumber();
try
/catch
或 throws
声明。
getStackTrace()[2]
。 - Nathan BrownThread.getStackTrace()
的实现。 - Doradus