Sev*_*yev 20 java eclipse conditional-compilation
我是一名长期从事Java的程序员.我正在Eclipse中开发一个Java Blackberry项目.问题 - 有没有办法在项目中引入不同的配置集,然后基于这些编译稍微不同的代码?
在Visual Studio中,我们有项目配置和#ifdef; 我知道Java中没有#ifdef,但可能是文件级别的东西?
mon*_*nny 16
您可以设置'final'字段和ifs以使编译器优化编译的字节代码.
...
public static final boolean myFinalVar=false;
...
if (myFinalVar) {
do something ....
....
}
Run Code Online (Sandbox Code Playgroud)
如果编译代码时'myFinalVar'为false,那么编译后的类将会遗漏'do something ....'位.如果您有多个条件 - 可以稍微整理一下:将它们全部转移到另一个类(比如'Config.myFinalVar')然后条件都可以保存在一个整洁的地方.
这种机制在'Hardcore Java'中描述.
[其实我认为这与早先发布的"穷人的ifdef"机制相同.]
您可以管理不同的类路径,例如,在一组不同的目录中实现每个"Action":
dir1/Main.java
dir2/Action.java
dir3/Action.java
Run Code Online (Sandbox Code Playgroud)
然后为每个版本使用不同的类路径
javac -sourcepath dir1 -cp dir2 dir1/Main.java
Run Code Online (Sandbox Code Playgroud)
要么
javac -sourcepath dir1 -cp dir3 dir1/Main.java
Run Code Online (Sandbox Code Playgroud)
如果你想专门用于BlackBerry,BlackBerry JDE有一个预处理器:
您可以通过更新Eclipse™配置文件为应用程序启用预处理.
在C:\ Program Files\Eclipse\configuration\config.ini中,添加以下行:osgi.framework.extensions = net.rim.eide.preprocessing.hook如果在进行构建后启用预处理,则必须清除在再次构建项目之前,从"项目"菜单中选择项目.
然后你可以在代码中做一些事情:
//#ifdef SOMETHING
// do something here
//#else
// do something else
//#endif
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅指定预处理器定义
归档时间: |
|
查看次数: |
16344 次 |
最近记录: |