Java 條件編譯 Conditional Compilation
阿新 • • 發佈:2019-01-05
根據Java編譯器的優化的機制,Java也能夠提供條件編譯。對於條件設為false的語句,編譯器將不對條件覆蓋的程式碼段生成位元組碼。
不僅可以用簡單的boolean常量值來做條件編譯,還可以用字串常量及任何其他型別的常量.
例如:
1. 簡單的boolean常量。
final boolean isDebug = true;
if(isDebug)
{
// debug模式狀態
System.out.println("現在是debug模式!");
}
2. 字串常量。
這裡要注意的是不能用equals方法,必須用簡單的判斷符號(==, != ....)
final String debug = "true"; final String currentMode = debug; if(currentMode == debug) { // debug模式狀態 System.out.println("現在是debug模式!"); }
3. 其他常量就不設定了
當然我們可以寫個CompilationConfig類,裡面僅設定所有要用條件編譯的選項。
這裡我寫了個示例,呵呵,記錄下以後不要忘記了,也希望能夠幫助需要這方向東東的人。
ConmpilationCofig.java
package com.litefeel.javaConditionalCompilationTest; /** * 這是一個配置條件編譯的類,實際編譯後這個類並不跟其他檔案關聯 * @author lite3 * */ public class CompilationConfig { // 配置是否是debug模式, 關鍵字 final是啟用條件編譯的關鍵 static public final boolean isDebug = true; // 用條件編譯來判別不同的平臺 static public final String platform1 = "platfor1"; static public final String platform2 = "platform2"; // 當前所用的平臺 static public final String currentPlatform = platform1; }
javaConditionalCompilationTest.java
package com.litefeel.javaConditionalCompilationTest; public class ConditionalCompilationTest { public ConditionalCompilationTest() { // 用條件編譯來去除多餘程式碼 // 這裡僅僅是輸出語句,也可以是其他邏輯程式碼 final String debug = "true"; final String currentMode = debug; if(currentMode == debug) { // debug模式狀態 System.out.println("現在是debug模式!"); } // 用條件編譯來判別不同的平臺 // 平臺1 if(CompilationConfig.currentPlatform == CompilationConfig.platform1) { System.out.println("這裡是平臺1的輸出!"); } // 平臺2 if(CompilationConfig.currentPlatform == CompilationConfig.platform2) { System.out.println("這裡是平臺2的輸出!"); } } static public void main(String[] args) { // 例項化條件編譯 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("現在是debug模式!");
System.out.println("這裡是平臺1的輸出!");
}
public static void main(String[] args)
{
new ConditionalCompilationTest();
}
}
很明顯已經去掉了平臺2的程式碼。
如果不知道怎麼反編譯,請使用Java 反編譯工具反編譯就行了。
» 轉載請註明來源:www.litefeel.com » 《Java 條件編譯 Conditional Compilation》
» 本文連結地址:https://www.litefeel.com/java-conditional-compilation/