有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

C++在java中是否有条件编译?

我们是否有java中此类语句的替代品

#ifdef MacOSX
    #import <Cocoa/Cocoa.h>
#else
    #import <Foundation/Foundation.h>
#endif

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


共 (2) 个答案

  1. # 1 楼答案

    不需要。一般来说,您需要为Cocoa/Foundation提供的功能使用一个通用的超级接口,然后根据所针对的平台,为该接口提供两个不同的实现类

  2. # 2 楼答案

    不,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,但这在开发时会很痛苦

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