首页 > 解决方案 > 为什么Java编译器不提供调用者的行号信息?

问题描述

C# 有这些非常好的编译器注释:CallerMemberNameCallerFilePath CallerLineNumber它(如名字所说)调用者的成员名称、文件路径和行号。这使得记录源代码行号之类的事情变得如此简单(和高效)。

在 Java 9 的 StackWalker 之前,似乎唯一的选择是使用getStackTrace()非常昂贵的。为什么 Java 花了这么长时间才包含一个解决方案?

此外,与简单的编译时计算参数相比,Java 9 的 StackWalker 效率如何?我想差异很大......这就引出了一个问题:为什么Java不能有编译时计算参数?

标签: javaloggingjavacline-numbers

解决方案


推荐阅读