我想知道是否有如果Java相當於對C的如何標記的Java代碼,例如,它不是編譯
#if 0
... Some Code ...
#endif
可以圍繞我們不希望編譯代碼塊中。添加塊報價:
/*
... Some Code ...
*/
也有同樣的效果,但問題是,我們必須確保沒有單獨的一行中塊註釋
// some comment
。
我想知道是否有如果Java相當於對C的如何標記的Java代碼,例如,它不是編譯
#if 0
... Some Code ...
#endif
可以圍繞我們不希望編譯代碼塊中。添加塊報價:
/*
... Some Code ...
*/
也有同樣的效果,但問題是,我們必須確保沒有單獨的一行中塊註釋
// some comment
。
在Java中沒有預處理器指令。您最好的選擇是註釋代碼。
我甚至無法想象爲什麼這是一個問題(如上所述),但我懷疑最簡單的做法是在編譯代碼之前在代碼中進行grep(或將其提交給版本控制回購)。我不認爲有黯然失色任何東西(如果這是你使用的是什麼),以幫助你,我幾乎可以肯定的是Java已經沒有內置的像一個機制,你在C.
描述我看到這在某個地方前一段時間:
// /*
class SomeClass{
int withSomeField;
..............
}
// */
而且您可以將//
s放入,並根據需要將其刪除。不過,這可能是多行評論,如果他們在那裏會導致問題。
有幾種解決方案:
使用預處理 - 我認爲它會與標準CPP工作。有一些Java特定proprocessors爲jappo和java+,你可以嘗試
與更換0#如果真要是:
如果(假){ 代碼 }
的可以通過查詢系統屬性來改進條件:
if(System.getProperty("NO_COMPILE").equals("true")) {
code
}
這樣做的好處是:在它可以很容易地從ANT或從Eclipse設置。
編輯:請注意,代碼是否會實際編譯並存在於.class文件中。此外,雖然查詢系統性能更優雅,是在運行時完成在編譯時間,因此不太內嵌原始需求。如果(錯誤的)在第二次更好。
EDIT2:一個更好的解決方案,我剛纔發現:http://prebop.sourceforge.net/
把它放在一個if(false)塊在eclipse中不起作用。例如下面給出的是編譯器錯誤(我有Project-> Build Automatically「ON」):if(false){intentional;}這意味着它正在被編譯。 –
沒錯 - 這就是我在第一次編輯時所說的。即使使用static final的解決方案也會編譯代碼。 Eclipse不應該給出錯誤,而是警告你「死代碼」。如果你有錯誤,那麼它在if(false)守護的塊中可能是錯誤的 –
有沒有在C/C++語言中使用的預處理器的指令的Java的等價物。 總之,你可以做使用註釋或ANT類似的東西,因爲這裏簡要介紹
Using annotations to add C like preprocessor directives
或這裏
static final
字段可以使用條件編譯。
static final boolean DEBUG = false;
if (DEBUG) {
some code ....
}
some code
將被編譯器移除。
另外,也可以使用assert
關鍵字來啓用和禁用代碼的某些部分。使用java -ea: ..
來控制應該啓用還是禁用代碼。見http://docs.oracle.com/javase/1.5.0/docs/guide/language/assert.html
如果(假)很適合我(使用Eclipse)。
你可以給一個參數*爲什麼*這不是編譯? – alestanis
AFAIK,這是編譯。所以你不能在'if'塊中存在代碼錯誤。我試過'static final boolean DONT_COMPILE = false',然後使用'if(!DONT_COMPILE){}'。這仍然會編譯'if'塊中的代碼。 –
你可以使用Java的預處理器,我想這將是更好的辦法比的標誌,當然 http://code.google.com/p/java-comment-preprocessor/ 標誌可以削減,並在編譯階段添加塊,但預處理允許使這一過程更加靈活
而不是試圖通過預處理源代碼(如C所示)來使代碼具有條件性,請使用面向對象的編程:使用設計模式(如策略和依賴注入)來使代碼有條件。
爲什麼你必須確保沒有''//評論? - 塊註釋內的'//'仍然是合法的語法。也沒有,這就是塊註釋是 – tobyodavies
對於第二部分,如果我理解正確這個原因,你應該使用'#如果0 ...'在C. - 不能塊引號用於單行註釋? –
相關:http://stackoverflow.com/questions/4526113/java-conditional-compilation-how-to-prevent-code-chunks-to-be-compiled – Thilo