我想知道是否有如果Java相当于对C的如何标记的Java代码,例如,它不是编译
#if 0
... Some Code ...
#endif
可以围绕我们不希望编译代码块中。添加块报价:
/*
... Some Code ...
*/
也有同样的效果,但问题是,我们必须确保没有单独的一行中块注释
// some comment
。
我想知道是否有如果Java相当于对C的如何标记的Java代码,例如,它不是编译
#if 0
... Some Code ...
#endif
可以围绕我们不希望编译代码块中。添加块报价:
/*
... Some Code ...
*/
也有同样的效果,但问题是,我们必须确保没有单独的一行中块注释
// some comment
。
在Java中没有预处理器指令。您最好的选择是注释代码。
我甚至无法想象为什么这是一个问题(如上所述),但我怀疑最简单的做法是在编译代码之前在代码中进行grep(或将其提交给版本控制回购)。我不认为有黯然失色任何东西(如果这是你使用的是什么),以帮助你,我几乎可以肯定的是Java已经没有内置的像一个机制,你在C.
描述我看到这在某个地方前一段时间:
// /*
class SomeClass{
int withSomeField;
..............
}
// */
而且您可以将//
s放入,并根据需要将其删除。不过,这可能是多行评论,如果他们在那里会导致问题。
有几种解决方案:
使用预处理 - 我认为它会与标准CPP工作。有一些Java特定proprocessors为jappo和java+,你可以尝试
与更换0#如果真要是:
如果(假){ 代码 }
的可以通过查询系统属性来改进条件:
if(System.getProperty("NO_COMPILE").equals("true")) {
code
}
这样做的好处是:在它可以很容易地从ANT或从Eclipse设置。
编辑:请注意,代码是否会实际编译并存在于.class文件中。此外,虽然查询系统性能更优雅,是在运行时完成在编译时间,因此不太内嵌原始需求。如果(错误的)在第二次更好。
EDIT2:一个更好的解决方案,我刚才发现:http://prebop.sourceforge.net/
把它放在一个if(false)块在eclipse中不起作用。例如下面给出的是编译器错误(我有Project-> Build Automatically“ON”):if(false){intentional;}这意味着它正在被编译。 –
没错 - 这就是我在第一次编辑时所说的。即使使用static final的解决方案也会编译代码。 Eclipse不应该给出错误,而是警告你“死代码”。如果你有错误,那么它在if(false)守护的块中可能是错误的 –
有没有在C/C++语言中使用的预处理器的指令的Java的等价物。 总之,你可以做使用注释或ANT类似的东西,因为这里简要介绍
Using annotations to add C like preprocessor directives
或这里
static final
字段可以使用条件编译。
static final boolean DEBUG = false;
if (DEBUG) {
some code ....
}
some code
将被编译器移除。
另外,也可以使用assert
关键字来启用和禁用代码的某些部分。使用java -ea: ..
来控制应该启用还是禁用代码。见http://docs.oracle.com/javase/1.5.0/docs/guide/language/assert.html
如果(假)很适合我(使用Eclipse)。
你可以给一个参数*为什么*这不是编译? – alestanis
AFAIK,这是编译。所以你不能在'if'块中存在代码错误。我试过'static final boolean DONT_COMPILE = false',然后使用'if(!DONT_COMPILE){}'。这仍然会编译'if'块中的代码。 –
你可以使用Java的预处理器,我想这将是更好的办法比的标志,当然 http://code.google.com/p/java-comment-preprocessor/ 标志可以削减,并在编译阶段添加块,但预处理允许使这一过程更加灵活
而不是试图通过预处理源代码(如C所示)来使代码具有条件性,请使用面向对象的编程:使用设计模式(如策略和依赖注入)来使代码有条件。
为什么你必须确保没有''//评论? - 块注释内的'//'仍然是合法的语法。也没有,这就是块注释是 – tobyodavies
对于第二部分,如果我理解正确这个原因,你应该使用'#如果0 ...'在C. - 不能块引号用于单行注释? –
相关:http://stackoverflow.com/questions/4526113/java-conditional-compilation-how-to-prevent-code-chunks-to-be-compiled – Thilo