有没有办法在Java中获取方法调用者的行号?我不想要抛出异常。我是否必须使用堆栈跟踪?有没有办法以便宜的方式做到这一点?
编辑:为了澄清,我不想要来电者班级的行号。我想要调用方法的确切行。
答案 0 :(得分:10)
Aasmund 提供的答案有效,但您最好使用
Thread.getStackTrace()
而非Exception.getStackTrace()
,因为您实际上并不对此例外感兴趣。
实际上,它不会产生太大的影响,但您的代码会更清楚地反映您的意图。
int callersLineNumber = Thread.currentThread().getStackTrace()[1].getLineNumber();
答案 1 :(得分:0)
您不需要实际抛出异常; 创建一个就足够了:
int callersLineNumber = new Exception().getStackTrace()[1].getLineNumber();
请注意,这既不需要try
/ catch
也不需要throws
声明。