http://www.mamicode.com/info-detail-650763.html
学习过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");
}
}