JAVA技巧(Java沒有#ifdef的條件編譯)

字號:

所謂條件編譯,就是程序中的某部分是否被編譯,取決于某個條件成立與否。一種常見的方法是排除調(diào)試輸出語句。一旦程序正常運行,開發(fā)人員就會刪除這些語句,以使程序更為簡潔或運行效率更高。雖然java缺乏顯示的條件編譯,但它有一種隱式的條件編譯。
    所有的java編譯器都必須進行流程分析,考試大提示: 以確保:變量必須先賦值,才能被引用;所有帶返回值的函數(shù)必須提供返回值等。如果編譯器發(fā)現(xiàn)了某個值為false的語句,編譯器將不對條件覆蓋的代碼段生成字節(jié)碼。因此,根據(jù)java編譯器的優(yōu)化和布爾常量(final boolean)的機制,java也能夠提供條件編譯。
    在C里面,有一個關(guān)鍵字_inline,它告訴編譯器,不需要調(diào)用這個函數(shù)(或方法)。當(dāng)C編譯器生成機器代碼時,調(diào)用_inline函數(shù)將直接被實際的方法體現(xiàn)代替,而不必進行將參數(shù)壓入堆棧、獲取控制、得到參數(shù)以及返回值等一系列調(diào)用函數(shù)的過程,在java中,final方法就相當(dāng)于C的內(nèi)聯(lián)函數(shù),這也是編譯器優(yōu)化的一個策略。