2012-11-01 92 views
1

可能重複:
#ifdef #ifndef in Java#ifdef等效於Java?

我想用這樣的事情來實現我的Android代碼的一些調試消息:

private static final boolean DEBUG = false; 

if (DEBUG) { 
// some code 
} 

然而,在編譯我不斷收到「非法開始表達」的錯誤。最終的布爾工作,但既不是靜態的也不是私人的工作。

我在方法中聲明瞭DEBUG變量。如果有一種方法可以使這個全局性的,以便在同一個Java文件中的所有內容都將看到它,而不是我需要在每個需要它的方法中聲明它,也會感激。

謝謝!

+0

只是把變量放在一個方法之外,一切都可以看到它。 – Serdalis

+0

你不能在Java中創建全局變量,它都需要成爲某個類作用域的一部分。將DEBUG定義爲該類的一個私有靜態最終成員,使該類有權讀取它。這意味着班級中的每個方法都可以讀取成員。 – breezee

回答

5

如果您希望該變量對該類中的所有方法都可見,則必須在類級別聲明該變量。

如果你這樣做的方法裏面如下:

private static final boolean DEBUG = false; 

的問題是修飾privatestatic沒有一個方法內不允許。


其實,你應該使用記錄器來達到這種目的。

+5

+1用於推薦使用記錄器 – LanguagesNamedAfterCofee

+0

編號有很多次您不希望將調試代碼編譯到生產代碼中。 DEBUG測試確保它不會。 – RichieHH

1

只需在類的頂部聲明它(方法之外,但仍然在類中)。

public class MyClass { 
    private static final boolean DEBUG = false; 
    ... 
} 

這樣,您就可以從每一個你在MyClass定義方法訪問DEBUG。您會收到一個錯誤,因爲方法中定義變量時,你不能使用private/static改性劑,只能用類字段使用它們(這同樣適用於publicprotected - 你可以使用final任何地方,不過)。