【发布时间】:2015-10-08 18:50:39
【问题描述】:
我有一个自定义的日志系统,它为每个日志语句显示日志语句的文件名和行号。 这很好用,除了 lambdas。对应于 lambda 内部位置的 StackTraceElement 不会产生文件名。这可能与 JVM 生成某种代码以使 lambda 工作有关,我不确定。有没有办法以某种方式获取文件名和行号?
【问题讨论】:
我有一个自定义的日志系统,它为每个日志语句显示日志语句的文件名和行号。 这很好用,除了 lambdas。对应于 lambda 内部位置的 StackTraceElement 不会产生文件名。这可能与 JVM 生成某种代码以使 lambda 工作有关,我不确定。有没有办法以某种方式获取文件名和行号?
【问题讨论】:
您可以获得使用 lambda 的源文件的名称(在堆栈跟踪的前面),但由于 lambda 被编译为内部类,它们没有实际的源文件名。
它们也没有行号,因为行号将位于您看不到的类(生成的内部类)中。
【讨论】: