Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java注释-禁用代码_Java_Android_Logging_Annotations_Conditional Statements - Fatal编程技术网

Java注释-禁用代码

Java注释-禁用代码,java,android,logging,annotations,conditional-statements,Java,Android,Logging,Annotations,Conditional Statements,我想为Android应用程序创建一些日志记录功能,并且我希望有一些代码行可以禁用,而无需在每次我想记录某个内容时写入如果跟踪激活的跟踪内容 使用C宏,我可以通过几种方法来实现这一点,例如: #ifdef _DEBUG # define TRACE(msg) #else # define TRACE(msg) SomeLogClass::log( msg ); #endif 然后只需在代码中保留对该宏的调用,不管它是否处于活动状态: TRACE("blabla") 有没有一种使用J

我想为Android应用程序创建一些日志记录功能,并且我希望有一些代码行可以禁用,而无需在每次我想记录某个内容时写入如果跟踪激活的跟踪内容

使用C宏,我可以通过几种方法来实现这一点,例如:

#ifdef _DEBUG
#    define TRACE(msg)
#else
#    define TRACE(msg) SomeLogClass::log( msg );
#endif
然后只需在代码中保留对该宏的调用,不管它是否处于活动状态:

TRACE("blabla")
有没有一种使用Java注释做类似事情的方法

我可以在日志类中添加一个布尔标志,该标志可以记录给定的消息,也可以不记录给定的消息,但这种方式的问题是,无论跟踪是否启用,都将始终计算给定给日志函数的参数,这将导致频繁调用的代码段中的一些性能损失


谢谢:

在某些时候,您必须检查日志记录是否已启用,很遗憾,没有解决方法。
另一种选择可能是使用不同的流,这些流将数据推入带有空方法的自定义流中。流只在日志过程开始时定义一次,因此检查跟踪是否启用是不必要的

我想我为您找到了解决方案,例如,创建自己的注释以使用日志我将创建@Logger:并定义切入点和连接点,就像您在AOP中使用的那样,它应该适合您。 点击这个链接

或者您可以使用android aspectj:

恐怕没有好办法。我也不确定注释是如何产生的,有些工具,比如天线,可以为Java提供宏再处理。那是你最好的选择。但是,任何解决方案都需要编译时工具,因为该功能不是用Java实现的。谢谢你的回答,但即使不需要,也会计算参数,这是我希望避免的。谢谢你的回答,我会看一看。