我们是否在java中替换了这些语句?
#ifdef MacOSX
#import <Cocoa/Cocoa.h>
#else
#import <Foundation/Foundation.h>
#endif
我想根据条件编译我的java类?
答案 0 :(得分:8)
不,Java没有这样的东西。虽然编译器可以删除保证不执行的代码,但它仍然是有效的代码。所以你可以:
private static final FOO_ENABLED = false;
...
if (FOO_ENABLED) {
System.out.println("This won't be included in the bytecode");
}
......你不能拥有:
private static final FOO_ENABLED = false;
...
if (FOO_ENABLED) {
This isn't even valid code. With a real preprocessor it wouldn't matter.
}
你可以通过常规预处理器运行“不完全Java”代码,以便之后获得有效的Java,但在开发时会很痛苦。
最好将您感兴趣的功能抽象到接口/抽象类中,然后针对不同的平台进行不同的具体实现,在执行时选择正确的实现。
答案 1 :(得分:1)
没有。一般情况下,您需要使用公共超接口来实现Cocoa
/ Foundation
所要提供的功能,然后为该接口提供两个不同的实现类,具体取决于您的平台正在瞄准。