qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

Java 条件编译 Conditional Compilation

 根据Java编译器的优化的机制,Java也能够提供条件编译。对于条件设为false的语句,编译器将不对条件覆盖的代码段生成字节码。
  不仅可以用简单的boolean常量值来做条件编译,还可以用字符串常量及任何其他类型的常量.
  例如:
  1. 简单的boolean常量。
final
boolean
isDebug
=
true;
if(isDebug)
{
//debug模式状态
System.out.println("现在是debug模式!");
}
  2. 字符串常量。
  这里要注意的是不能用equals方法,必须用简单的判断符号(==, != ....)
final
String
debug
=
"true";
final
String
currentMode
=
debug;
if(currentMode
==
debug)
{
//debug模式状态
System.out.println("现在是debug模式!");
}


3. 其他常量就不设置了
  当然我们可以写个CompilationConfig类,里面仅设置所有要用条件编译的选项。
  这里我写了个示例,呵呵,记录下以后不要忘记了,也希望能够帮助需要这方向东东的人。
  ConmpilationCofig.java
package
com.litefeel.javaConditionalCompilationTest;
/**
* 这是一个配置条件编译的类,实际编译后这个类并不跟其他文件关联
* @author lite3
*
*/
public
class
CompilationConfig
{
//配置是否是debug模式, 关键字 final是启用条件编译的关键
static
public
final
boolean
isDebug
=
true;
//用条件编译来判别不同的平台
static
public
final
String
platform1
=
"platfor1";
static
public
final
String
platform2
=
"platform2";
//当前所用的平台
static
public
final
String
currentPlatform
=
platform1;
}
  javaConditionalCompilationTest.java
package
com.litefeel.javaConditionalCompilationTest;
public
class
ConditionalCompilationTest
{
public
ConditionalCompilationTest()
{
//用条件编译来去除多余代码
//这里仅仅是输出语句,也可以是其他逻辑代码
final
String
debug
=
"true";
final
String
currentMode
=
debug;
if(currentMode
==
debug)
{
//debug模式状态
System.out.println("现在是debug模式!");
}
//用条件编译来判别不同的平台
//平台1
if(CompilationConfig.currentPlatform
==
CompilationConfig.platform1)
{
System.out.println("这里是平台1的输出!");
}
//平台2
if(CompilationConfig.currentPlatform
==
CompilationConfig.platform2)
{
System.out.println("这里是平台2的输出!");
}
}
static
public
void
main(String[]
args)
{
//实例化条件编译
new
ConditionalCompilationTest();
}
}



编译后,javaConditionalCompilationTest.class 反编译后为:
package
com.litefeel.javaConditionalCompilationTest;
import
java.io.PrintStream;
public
class
ConditionalCompilationTest
{
public
ConditionalCompilationTest()
{
String
debug
=
"true";
String
currentMode
=
"true";
System.out.println("现在是debug模式!");
System.out.println("这里是平台1的输出!");
}
public
static
void
main(String[]
args)
{
new
ConditionalCompilationTest();
}
}
  很明显已经去掉了平台2的代码。
  如果不知道怎么反编译,请使用Java 反编译工具反编译就行了。

posted on 2013-10-18 11:36 顺其自然EVO 阅读(526) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年10月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜