我有一个Java项目,它被j2me项目和Android项目引用。 在这个项目中,我想使用条件编译。
类似于...
//#if android
...
//#endif
//if j2me
...
//#endif
我一直在阅读相关内容,但是目前还没有找到有用的信息。
我有一个Java项目,它被j2me项目和Android项目引用。 在这个项目中,我想使用条件编译。
类似于...
//#if android
...
//#endif
//if j2me
...
//#endif
我一直在阅读相关内容,但是目前还没有找到有用的信息。
//base class Base.java
public abstract class Base {
public static Base getInstance()
{
//#ifdef ANDROID
return new AndroidBaseImpl();
//#elif J2ME
return new J2MEBaseImpl();
//#endif
}
public abstract void doSomething();
}
//Android specific implementation AndroidBaseImpl.java
//#ifdef ANDROID
public class AndroidBaseImpl extends Base {
public void doSomething() {
//Android code
}
}
//#endif
//J2ME specific implementation J2MEBaseImpl.java
//#ifdef J2ME
public class J2MEBaseImpl extends Base {
public void doSomething() {
// J2Me code
}
}
//#endif
public class App {
public void something {
// Depends on the preprocessor symbol you used to build a project
Base.getInstance().doSomething();
}
}
也许你应该考虑创建与特定配置文件(J2ME、Android或将来的其他配置文件)相关的逻辑接口。然后为每个配置文件创建具体的接口实现。任何通用部分都可以拆分成一个抽象基类,供两个实现扩展使用。这样,每个配置文件的逻辑都可以很好地分离出不同的关注点。对于每个配置文件,只需构建适当的类集合(例如,您可以按包进行分离)。从长远来看,这将更容易维护、调试、测试和理解。