Java 条件编译

根据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 cn.lite3.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 cn.lite3.javaConditionalCompilationTest;
 
//import cn.lite3.javaConditionalCompilationTest.otherPackage.OtherPackageTest;
 
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();
        //new OtherPackageTest();
    }
}

编译后,javaConditionalCompilationTest.class 反编译后为:
看看是不是去掉了平台2的代码呢 
如果不知道怎么反编译,请使用Java 反编译工具反编译就行了.
package cn.lite3.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();
  }
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值