在 Java 中是否可以像在 C/C++ 中那样做某种 #ifdef 事情?
例子:
class Test
{
public static final boolean ANDROID = false;
public Test()
{
if (ANDROID)
{
// do stuff that won't compile if not on android
}
else
{
// do stuff that should be only done on desktop
}
}
}
请注意,即使ANDROID
is false
,如示例中所示,它仍会尝试编译 内部的代码if
,即使它不会(也不应该)编译。
我正在寻找一种进行条件编译的方法——编译器甚至不应该查看if
if ANDROID
is false
。
我的问题的上下文是我在 Eclipse 中有一个处理应用程序。我在两个单独的项目中同时使用正常的 Processing 和 Processing for Android,但我希望能够在彼此之间移动项目的源代码而不会出现编译器错误。例如,我希望能够拥有可以从 Android 项目移动到桌面项目的源代码文件,并且只需要更改一些东西——例如,更改ANDROID = true
为ANDROID = false
.
我真的需要它是条件编译,因为当我将源代码从Android项目复制到桌面项目时,桌面库显然不会包含Android库,然后源代码甚至不会编译。
编辑:所以现在我知道 Java 中没有预处理器,我的问题是:有没有其他方法可以在我的项目中使用此功能(只需非常小的更改即可将源代码从一个复制到另一个)必须手动 [un] 注释特定的代码片段并且必须记住它们在哪里?
编辑 2:这不是另一个问题的重复,因为我的问题包含可能包含编译器错误的代码,而作为副本关闭的问题没有。(另一个问题只涉及即使没有#ifdef
s 也能正常编译的代码。)为了解释,另一个问题的最高评价(和接受)的答案是关于已编译但根本不在字节码中发出的代码。但是,我的问题涉及最初甚至无法编译的代码。