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