2012-10-04 48 views
2

我知道我拋出了一個非常愚蠢的問題,但我保證我試着搜索周圍的設置和周圍的谷歌和網絡,沒有運氣,所以我想我應該問。如何在Eclipse中使用if(DEBUG)?

我在好幾個開源項目看到了下面一行:

if(DEBUG){ 
    // do some logging 
} 

我完全理解什麼線是幹什麼的,我似乎無法重複。 代碼中的任何地方都沒有boolean DEBUG;的聲明,我無法弄清楚項目屬性中的一個位置,以便定義在編譯(字節碼)時被替換的系統範圍變量。據我所知,如果它是一個類常量的參考,它應該是Log.DEBUG或類似的東西。

任何人都可以爲我解開這個謎團嗎? 謝謝。

+0

你在你的進口看一下如果它在那裏?它可能是一個靜態導入,這將解釋爲什麼它沒有在源代碼中聲明。 –

+0

我猜他們都是從一些具有常量定義的類繼承的,可能是從某些設置文件初始化它... – bdares

+2

如果您使用的是Eclipse:將光標放在單詞DEBUG上,然後按F3 。它應該跳轉到「DEBUG」的聲明。 – Jesper

回答

3

你真的應該看看類的進口部分說。

這可能是一個static import,像這樣:


A.java

public class A { 
    public static boolean DEBUG = false; 
} 

B.java

import static A.DEBUG; 

public class B { 
    public void myMethod() { 
    if (DEBUG) { 
     // do something 
    } 
    } 
} 
+0

我知道我們不應該做「謝謝」評論。但太棒了!這是在單個位置保留調試標誌值並在應用程序中使用的方式。然後,通過一行更改,您可以編譯生產版本。謝謝。 – Budius

0

你是在一個public static field面前,看在import列表,並挑選原班或者,使用Eclipse中的在線幫助,在評論

+0

我測試了在class1.java和class2.java中導入class1.java並使用DEBUG創建'public static final boolean DEBUG',但除非我編寫class1.DEBUG,否則它將無法識別。這可能是項目配置中的一些東西。我知道在TexasInstrument IDE上它們的微控制器有一個部分,你可以聲明常量,但這是C嵌入uC – Budius

+0

@Budius你是對的,然後驗證你的類是否擴展anotehr類(或抽象的) –

+0

這是我在GitHub上看到的東西或谷歌代碼,並總是竊聽我。我現在想起來,在工作中問了一些問題,沒有人知道。但至少現在已經註冊了,下次我看到一個我會檢查這個項目,挖掘它並將答案發回到這裏。 – Budius