可達代碼,請看看這個Android的代碼示例:的Java/Android的代碼優化:請問Java的去除構建
private static final boolean aBoolean = false;
...
if(aBoolean){
//do something like logs
}
在這種情況下,由於aBoolean的值是假的,它不能改變在運行時,//會執行類似logs語句的內容在構建時被忽略,還是仍然會構建,並且每次都會評估if?
我試圖找到像前處理#DEFINE #IF行爲......所以,當我編碼,我得到我的日誌,當我鬆開我切換一個值和我所有的調試代碼被完全忽略。
(也是我想指出的是,我的問題就是Android面向所以如果在這個問題上的Java和Android之間的差異,請讓我知道)
至少對於桌面Java來說,這是不對的,代碼將被JIT刪除。而且代碼不會產生編譯時錯誤。 –
爲什麼-1在使用return之後嘗試放置任何語句而沒有任何條件。 這會給出錯誤「無法訪問的代碼語句」。 –
具有已知-false條件的if子句從「不可達代碼」檢測中明確排除*,準確地說是允許這樣的事情(基於編譯時值的條件執行)。試試吧,你會看到的。 –