java - 为什么Java编译器不提供调用者的行号信息?
问题描述
C# 有这些非常好的编译器注释:CallerMemberName
,CallerFilePath
CallerLineNumber
它(如名字所说)调用者的成员名称、文件路径和行号。这使得记录源代码行号之类的事情变得如此简单(和高效)。
在 Java 9 的 StackWalker 之前,似乎唯一的选择是使用getStackTrace()
非常昂贵的。为什么 Java 花了这么长时间才包含一个解决方案?
此外,与简单的编译时计算参数相比,Java 9 的 StackWalker 效率如何?我想差异很大......这就引出了一个问题:为什么Java不能有编译时计算参数?
解决方案
推荐阅读
- rust - 从选项创建具有 0 或 1 个元素的向量
- express - 节点请求在控制台日志中显示 jwt 令牌,但无法在 cookie 中设置
- pointers - 在 Delphi 的泛型函数中分配对象的指针函数属性 - 为什么这段代码有效?
- php - 检查当前日期是否是 CET 和 CEST 之间的变化日
- ios - 当应用程序在苹果商店或 testFlight 上发布时,plist 中的框架版本号由 XCode 13 更改
- c++ - struct Snake { int x, y; 是什么意思?} 蛇[225]; 意思是?
- amazon-web-services - AWS - CloudFormation - 使用 CodestarSource 连接的 GitHub 完整克隆
- azure - Microsoft Graph API 在授予权限时出现未经授权的错误
- installation - SLES 10 SP4 iso 下载或我可以从哪里得到它?
- php - 在我的 laravel 项目中出现 yahoo 错误