2021-2022年收藏的精品资料软件工程师Java如何实现条件编译教程方法.docx
-
资源ID:19293034
资源大小:27KB
全文页数:3页
- 资源格式: DOCX
下载积分:6金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2021-2022年收藏的精品资料软件工程师Java如何实现条件编译教程方法.docx
星期八职场经验网()【现成经验助你快速完成工作】Java如何实现条件编译条件编译绝对是一个好东西。如在C或CPP中,可以通过预处理语句来实现条件编译。但是在JAVA中却没有预处理,宏定义这些东西,而有时在一些项目中,我们又需要条件编译。那么,在JAVA中,该如何实现条件编译呢?AD: 条件编译绝对是一个好东西。如在C或CPP中,可以通过预处理语句来实现条件编译。代码如下:1. #IFDEF DEBUG 2. #UNDEF DEBUG 3. #ENDIF 4. #define DEBUG 5. #IFDEF DEBUUG 6. /* 7. code block 1 8. */ 9. #ELSE 10. /* 11. code block 2 12. */ 13. #ENDIF 但是在JAVA中却没有预处理,宏定义这些东西,而有时在一些项目中,我们又需要条件编译。那么,在JAVA中,该如何实现条件编译呢?我们来看一个例子。编写一个helloworld程序。代码如下:1. public class Hello 2. public static void main(String args) 3. System.out.println("Hello, world!"); 4. 5. 保存为Hello.java并编译,得到一个class文件,并且观察到文件大小是417字节。然后我们对这个文件进行反编译,用jd-gui。得到代码如下:1. import java.io.PrintStream; 2. public class Hello 3. 4. public static void main(String paramArrayOfString) 5. 6. System.out.println("Hello, world!"); 7. 8. 得到这个有什么用呢?现在我们再来对源代码进行修改,修改后的代码如下。1. public class Hello 2. public static void main(String args) 3. if(false) 4. System.out.println("Hello, world!"); 5. 6. 7. 进行编译,这时我们再看它的大小,只有255字节。怎样?想到什么了吧?没错,编译器会对代码进行优化,对于条件永远为false的语句,JAVA编译器将不会对其生成字节码。下面我们再来对该class文件进行反编译,果然代码如下:1. public class Hello 2. 3. public static void main(String paramArrayOfString) 4. 5. 6. 利用JAVA编译的这一优化机制,我们就可以实现JAVA的条件编译了。1. public class Hello 2. public static void main(String args) 3. if(false) 4. System.out.println("Hello, world!"); 5. 6. 7. 定义一个final的变量,然后再在if语句中使用。代码如下:1. public class Hello 2. public static void main(String args) 3. final boolean DEBUG = true; 4. if(DEBUG) 5. System.out.println("Hello, world!"); 6. 7. 8. 当条件编译使用得多时,上面将极不利于代码的修改及维护,这时就可以用一种更为灵活的方法。定义一个静态类,里面专门定义用来控制条件编译的变量。然后再在具体的代码中导入该类,使用这些final变量。代码如下:1. public class DebugConfig 2. public static final boolean BLUETOOTH_DEBUG = false; 3. public static final boolean WIRELESS_DEBUG = false; 4. 1. if ( DebugConfig.BLUETOOTH_DEBUG) 2. / TODO 3.