JAVA 中的 “ Feature ”
--Android 应用开发中如何实现条件编译
第一研究所
张长青
2011-09-06
前言
一般情况下,源程序中所有的行都参加编译。但有时
希望对其中一部分内容只在满足一定条件下才进行编译,
即对一部分内容指定编译条件,这就是
“
条件编译
”
(
conditional compile )。
条件编译的引入,可以将针对于不同硬件平台或软件
平台的代码, 或不同功能模块的代码, 编写在于同一程序
文件中,从而方便程序的维护和移植。在进行软件移植的
时候,可以针对不同的情况,控制不同的代码段被编译 ,
从而实现不同的功能。
条件编译最大的好处就是易于维护,特别是在针对不
同产品进行版本控制的时候。因为代码只有一份,不需要
同时维护多份代码。
目录
1
C/C++ 中的条件编译
Java 中如何实现条件编译
2
在 Android 源码工程中的可选方法
3
通过 system.prop 文件控制条件编译
4
1 、 C/C++ 中的条件编译
这个其实不用多提,大家已经司空见惯了,简单一过。
#ifdef identifier #ifndef identifier
your code
your code
#else #else
your code
your code
#endif #endif
#if defined ( expressin1 )
your code1
#elif expression2
your code2
#else
your code3
#en d if
2 、 Java 中如何实现条件编译
Java
语言的历史与
C/C++
没有任何关系,设计思想也不一样,所以
设计之初就没有引入该功能。但是既然条件编译是有作用的,那么在
Java
中如何实现类似的功能呢? 根据
Java
编译器的优化和布尔常量
(final Boolean)
的机制,
Java
也能够提供条件编译。对于条件 表达式中
永远为 false 的语句,编译器将不对条件覆盖的代码段生成字节码。
final boolean bDebug =false;
System.out.println( “ Hello,World ” );
if ( bDebug )
{
System.out.println( “ Hello,World ” ); // 这句会被编译器优化掉
}
注意:必须是 final 类型的。
如果 if( bDebug ) 中的代码量大的话,你可以看看当 bDebug 设置为 “ true ” 、 “ false ” 时生成 class
文件大小有何变化。 或者使用反编译工具将 class 文件反编译一下,就可以看出其中的奥秘了。
- 1
- 2
- 3
- 4
- 5
- 6
前往页