知识大全 从思路开始 Java如何实现条件编译

Posted 条件

篇首语:厌伴老儒烹瓠叶,强随举子踏槐花。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 从思路开始 Java如何实现条件编译相关的知识,希望对你有一定的参考价值。

从思路开始 Java如何实现条件编译  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  条件编译绝对是一个好东西 如在C或CPP中 可以通过预处理语句来实现条件编译 代码如下

  #IFDEF DEBUG#UNDEF DEBUG#ENDIF#define DEBUG#IFDEF DEBUUG  /*   code block    */#ELSE  /*   code block   */#ENDIF  但是在JAVA中却没有预处理 宏定义这些东西 而有时在一些项目中 我们又需要条件编译 那么 在JAVA中 该如何实现条件编译呢?

  我们来看一个例子

  编写一个helloworld程序 代码如下

  public class Hello     public static void main(String[] args)         System out println( Hello world! );      保存为Hello java并编译 得到一个class文件 并且观察到文件大小是 字节 然后我们对这个文件进行反编译 用jd gui 得到代码如下

  import java io PrintStream;public class Hello  public static void main(String[] paramArrayOfString)      System out println( Hello world! );    得到这个有什么用呢?

  现在我们再来对源代码进行修改 修改后的代码如下

  public class Hello     public static void main(String[] args)         if(false)             System out println( Hello world! );              进行编译 这时我们再看它的大小 只有 字节 怎样?想到什么了吧?没错 编译器会对代码进行优化 对于条件永远为false的语句 JAVA编译器将不会对其生成字节码 下面我们再来对该class文件进行反编译 果然代码如下

  public class Hello  public static void main(String[] paramArrayOfString)   

  利用JAVA编译的这一优化机制 我们就可以实现JAVA的条件编译了

  public class Hello     public static void main(String[] args)         if(false)             System out println( Hello world! );              定义一个final的变量 然后再在if语句中使用 代码如下

  public class Hello     public static void main(String[] args)         final boolean DEBUG = true;        if(DEBUG)             System out println( Hello world! );              当条件编译使用得多时 上面将极不利于代码的修改及维护 这时就可以用一种更为灵活的方法 定义一个静态类 里面专门定义用来控制条件编译的变量 然后再在具体的代码中导入该类 使用这些final变量 代码如下

cha138/Article/program/Java/hx/201311/25823

相关参考