[英]Java Annotations - Disabling code
我想為Android應用程序創建一些日志記錄功能,並且我希望可以禁用一些代碼行,而不必每次我想記錄某些if( traces activated ) trace stuff
都編寫if( traces activated ) trace stuff
。
使用C宏,我可以通過幾種方式做到這一點,例如:
#ifdef _DEBUG
# define TRACE(msg)
#else
# define TRACE(msg) SomeLogClass::log( msg );
#endif
然后只需將對宏的調用保留在代碼中,無論該宏是否處於活動狀態:
TRACE("blabla")
有沒有辦法使用Java注釋來做類似的事情?
我可以在將記錄或不記錄給定消息的日志類中添加一個布爾標志,但是這種方式的問題在於,無論是否啟用了跟蹤,都會始終計算給定日志函數的參數,這將導致經常調用的代碼段會導致一些性能損失。
謝謝 :)
在某些時候,您必須檢查是否啟用了日志記錄,可悲的是沒有解決方法。 另一種選擇是使用不同的流,這些流會將您的數據推到無處(使用空方法的自定義流)。 流只會在記錄過程開始時定義一次,因此不需要檢查是否啟用了跟蹤
我認為我為您找到了解決方案,例如創建自己的注釋以使用日志記錄(我將創建@Logger :))並定義切入點和連接點(就像您在AOP中所做的那樣),它應該為您工作。 請點擊此鏈接http://fernandocejas.com/2014/08/03/aspect-directional-programming-in-android/
或者您可以使用android-aspectj: http : //blog.punegtug.org/2010/11/adding-aspect-to-android.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.