根据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 反编译工具反编译行了。