【发布时间】:2015-02-25 12:06:52
【问题描述】:
我想为 Android 应用程序创建一些日志记录功能,并且我希望有可以禁用的代码行,而无需在每次我想记录某些内容时编写 if( traces activated ) trace stuff。
使用 C 宏,我可以通过多种方式做到这一点,例如:
#ifdef _DEBUG
# define TRACE(msg)
#else
# define TRACE(msg) SomeLogClass::log( msg );
#endif
然后在代码中保留对该宏的调用,无论它是否处于活动状态:
TRACE("blabla")
有没有办法使用 Java 注释做类似的事情?
我可以在日志类中添加一个布尔标志来记录或不记录给定的消息,但这种方式的问题是,无论是否启用跟踪,都将始终计算给定日志函数的参数,这会在频繁调用的代码片段中造成一些性能损失。
谢谢你:)
【问题讨论】:
-
AFAIK 没有一个好的方法。我也不确定注释是如何进入其中的。
-
有一些工具,比如天线,可以为 Java 提供宏再处理。那是你最好的选择。但是任何解决方案都需要编译时工具,因为 Java 中没有该功能。
标签: java android logging annotations conditional-statements