簡體   English   中英

Java注釋-禁用代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM