Java有没有办法获取当前文件名和当前行号?

pyt*_*hon 6 java logging file

在C++中,源代码的文件和当前行号是由FILEINLINE决定的,这是在编译时决定的,Java中有没有任何方法可以做类似的事情?文件和行号是在编译时而不是运行时决定的?这样对于日志来说会很方便。我有点怀疑使用运行时方法来检测这些信息会降低性能。

Ell*_*sch 6

你可以使用Thread.getStackTrace()类似的东西

System.out.println(Thread.currentThread().getStackTrace()[1]);
Run Code Online (Sandbox Code Playgroud)

输出包括当前方法和行号(如果编译了调试)。例如,

com.stackoverflow.Main.main(Main.java:23)
Run Code Online (Sandbox Code Playgroud)