在最近经历中,遇见了这样一个问题,如何获取当前源文件名以及代码的行号,只是了解到C语言有预定义宏__FILE__、__LINE__,它们在预处理的时候都已经确定好了,但是在JAVA中应该怎么获取输出呢。
经过查找发现java提供以下方法来获取当前文件名以及行号
Thread.currentThread().getStackTrace()[1].getFileName():获取当前文件名; Thread.currentThread().getStackTrace()[1].getLineNumber():获取当前行号。
其中:Thread.currentThread().getStackTrace()返回的是一个数组形式的函数调用栈(栈顶在索引0处),其中第1个元素(索引为0)为最新调用的函数信息(getStackTrace()),第2个元素(索引为1)为当前函数(即调用getStackTrace()的函数)信息。