码迷,mamicode.com
首页 > 编程语言 > 详细

Java条件编译

时间:2015-05-24 20:20:21      阅读:601      评论:0      收藏:0      [点我收藏+]

标签:

      学习过C语言或者C++语言的同学都知道它们支持条件编译,那么今天我们来学习下在Java语言中如何实现条件编译。Java语言本身没有提供条件编译,但是Java编译器对.java文件编译为.class文件做了优化,下面通过一个例子给大家详细讲解。

      下面先给出HelloWorld.java文件:

 1 package com.test;
 2 
 3 /**
 4  * Test Demo
 5  */
 6 public class HelloWorld {
 7 
 8     public static void main(String[] args) {
 9         if (BuildConfig.FLAG) {
10             System.out.println("Hello World");
11         } else {
12             System.out.println("Java条件编译测试");
13         }
14     }
15 
16 }

       再来看看BuildConfig.java文件:      

package com.test;

/**
 * Created by Administrator on 2015/5/24.
 */
public final class BuildConfig {

    public static final boolean FLAG = false;
}

 

再来看看该.java文件被转化为.class文件的内容:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.test;

public class HelloWorld {
    public HelloWorld() {
    }

    public static void main(String[] args) {
        System.out.println("Java条件编译测试");
    }
}

      可以知道的是BuildConfig.FLAG永远都为false,if块内的代码当然也不会被执行,这部分代码就不会被编译到.class文件中。

  如果FLAG是字符串会怎么样?字符串之间如果使用equals进行比较,在转化为.class文件时不会得到优化。

      HelloWorld.java文件:

package com.test;

/**
 * Test Demo
 */
public class HelloWorld {

    public static void main(String[] args) {
        if (BuildConfig.FLAG.equals("false")) {
            System.out.println("Hello World");
        } else {
            System.out.println("Java条件编译测试");
        }
    }

}

       HelloWorld.class文件:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.test;

public class HelloWorld {
    public HelloWorld() {
    }

    public static void main(String[] args) {
        if("false".equals("false")) {
            System.out.println("Hello World");
        } else {
            System.out.println("Java条件编译测试");
        }

    }
}

      如果真的需要字符串比较,实现条件编译的话可以使用 "=="。

      HelloWorld.java文件:

package com.test;

/**
 * Test Demo
 */
public class HelloWorld {

    public static void main(String[] args) {
        if (BuildConfig.FLAG == "false") {
            System.out.println("Hello World");
        } else {
            System.out.println("Java条件编译测试");
        }
    }

}

       HelloWorld.class文件:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.test;

public class HelloWorld {
    public HelloWorld() {
    }

    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

 

Java条件编译

标签:

原文地址:http://www.cnblogs.com/yili-2013/p/4526346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!