我们在java中有条件编译吗?

1 c++ java compilation

我们在java中替换了这些语句吗?

#ifdef MacOSX
    #import <Cocoa/Cocoa.h>
#else
    #import <Foundation/Foundation.h>
#endif
Run Code Online (Sandbox Code Playgroud)

我想根据条件编译我的java类?

Jon*_*eet 8

不,Java没有这样的东西.虽然编译器可以删除保证不执行的代码,但它仍然是有效的代码.所以你可以:

private static final FOO_ENABLED = false;

...

if (FOO_ENABLED) {
    System.out.println("This won't be included in the bytecode");
}
Run Code Online (Sandbox Code Playgroud)

......你不能拥有:

private static final FOO_ENABLED = false;

...

if (FOO_ENABLED) {
    This isn't even valid code. With a real preprocessor it wouldn't matter.
}
Run Code Online (Sandbox Code Playgroud)

可以通过常规预处理器运行"不完全Java"代码,以便之后获得有效的Java,但这在开发时会很痛苦.

最好将您感兴趣的功能抽象到接口/抽象类中,然后针对不同的平台进行不同的具体实现,在执行时选择正确的实现.

  • 嗯...... [有点](http://stackoverflow.com/a/1813873/474189),虽然不是让你摆弄导入语句的方式. (3认同)