当前位置: 首页 > 面试题库 >

Java(Eclipse)-条件编译

易衡
2023-03-14
问题内容

我有一个在j2me项目和android项目中引用的java项目。在这个项目中,我想使用条件编译。

就像是…

//#if android
...
//#endif

//if j2me
...
//#endif

我一直在阅读有关此内容的信息,但没有发现任何有用的信息。


问题答案:

您可以使用Antenna(有一个Eclipse插件,您可以将其与Ant构建系统一起使用)。我正在按照您描述的方式在我的项目中使用它,并且效果很好:)

编辑:这是与@ WhiteFang34解决方案相关的示例,是一种解决方法:

在您的核心项目中:

//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();
    }
}

比起要为Android进行构建, 如果要为J2ME平台进行构建,则只需定义 ANDROID 预处理程序符号或 J2ME

无论如何,我希望它会有所帮助:)



 类似资料:
  • 问题内容: 我想知道是否有一种方法可以在调试时在eclipse中添加条件断点。示例:如果city ==“ New York”,则中断。 问题答案: 是。右键单击断点,选择“断点属性”,启用“条件”,然后输入条件。注意,由于相等性在Java中的工作方式,这不是一个很好的条件,但会很好。请注意,Eclipse允许像这样的简单布尔条件,并且也“在值更改时暂停”。

  • 问题内容: 我在Go 1中使用条件编译遇到了麻烦。 这是我的测试代码。关于“ // + build”约束和“ -tags”标志,我有什么误解吗? main1.go main2.go 运行“执行构建”时,我仍然出现编译错误 问题答案: 您必须跟随一个空白行。 在我的简短搜索中,找不到该文件的记录位置/位置。但消息人士明确指出

  • Rust 有一个特殊的属性,#[cfg],它允许你基于一个传递给编译器的标记编译代码。它有两种形式: #[cfg(foo)] # fn foo() {} #[cfg(bar = "baz")] # fn bar() {} 它还有一些帮助选项: #[cfg(any(unix, windows))] # fn foo() {} #[cfg(all(unix, target_pointer_wid

  • 编译器有一个定义符号列表,定义符号可以通过 !define 定义或使用 /D 命令行开关。这些定义符号可以用于条件编译 (通过 !ifdef 定义) 或用于符号替换 (一种格式简单的宏)。若要用它的值替换一个符号,请使用 ${符号} (如果没有定义符号,那么不会产生转换)。这个转换为“先到先得”,这意味着如果你做了: !define 符号1 ${符号2} 当出现该行时,如果定义了“符号2”它将

  • 条件编译在处理机器依赖、调试以及编译阶段设定特定选项时十分有用。不过要小心条件编译。各种控制很容易以一种无法预料的方式结合在一起。如果使用#ifdef判断机器依赖,请确保当没有机器类型适配时,返回一个错误,而不是使用默认机器类型(使用#error并缩进一级,这样它可以一些老旧的编译器下工作)。如果你#ifdef优化选项,默认情况下应该是一个未经优化的代码,而不是一个不兼容的程序。确保测试的是未经优

  • 问题内容: 如何使用Java格式化Floats,以便仅在其不为零的情况下显示float组件?例如: 编辑:我忘了提-我仍在使用Java 1.4-对不起! 问题答案: 如果使用DecimalFormat并在模式中指定#,则仅在不为零的情况下显示该值。 看到我的问题如何在Java中格式化数字? 样例代码