Java 条件编译 Conditional Compilation
根據(jù)Java編譯器的優(yōu)化的機(jī)制,Java也能夠提供條件編譯。對于條件設(shè)為false的語句,編譯器將不對條件覆蓋的代碼段生成字節(jié)碼。
不僅可以用簡單的boolean常量值來做條件編譯,還可以用字符串常量及任何其他類型的常量.
例如:
1. 簡單的boolean常量。
final boolean isDebug = true; if(isDebug) {// debug模式狀態(tài)System.out.println("現(xiàn)在是debug模式!"); }2. 字符串常量。
這里要注意的是不能用equals方法,必須用簡單的判斷符號(==, != ....)
3. 其他常量就不設(shè)置了
當(dāng)然我們可以寫個(gè)CompilationConfig類,里面僅設(shè)置所有要用條件編譯的選項(xiàng)。
這里我寫了個(gè)示例,呵呵,記錄下以后不要忘記了,也希望能夠幫助需要這方向東東的人。
ConmpilationCofig.java
javaConditionalCompilationTest.java
package com.litefeel.javaConditionalCompilationTest;public class ConditionalCompilationTest {public ConditionalCompilationTest(){// 用條件編譯來去除多余代碼// 這里僅僅是輸出語句,也可以是其他邏輯代碼final String debug = "true";final String currentMode = debug;if(currentMode == debug){// debug模式狀態(tài)System.out.println("現(xiàn)在是debug模式!");}// 用條件編譯來判別不同的平臺// 平臺1if(CompilationConfig.currentPlatform == CompilationConfig.platform1){System.out.println("這里是平臺1的輸出!");}// 平臺2if(CompilationConfig.currentPlatform == CompilationConfig.platform2){System.out.println("這里是平臺2的輸出!");}}static public void main(String[] args){// 實(shí)例化條件編譯new ConditionalCompilationTest();} }編譯后,javaConditionalCompilationTest.class 反編譯后為:
package com.litefeel.javaConditionalCompilationTest;import java.io.PrintStream;public class ConditionalCompilationTest {public ConditionalCompilationTest(){String debug = "true";String currentMode = "true";System.out.println("現(xiàn)在是debug模式!");System.out.println("這里是平臺1的輸出!");}public static void main(String[] args){new ConditionalCompilationTest();} }很明顯已經(jīng)去掉了平臺2的代碼。
如果不知道怎么反編譯,請使用Java 反編譯工具反編譯就行了。
完整示例文件下載
? 轉(zhuǎn)載請注明來源:www.litefeel.com?? 《Java 條件編譯 Conditional Compilation》
? 本文鏈接地址:https://www.litefeel.com/java-conditional-compilation/
總結(jié)
以上是生活随笔為你收集整理的Java 条件编译 Conditional Compilation的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实现条件编译
- 下一篇: Java知识点:条件编译