10

可能重复:
如何标记 Java 代码使其未编译

中,我们可以防止编译这样的块代码:

#if 0

    //code here

#endif

因此,即使代码块容易出错,代码也可以编译,我想要在 Java 中做同样的事情,这样我就可以跳过由于缺少某些库而无法编译的那部分代码。

谁能帮我 ?

4

6 回答 6

20

Java 中没有预处理器。根据您的构建系统,您可能能够使用第三方预处理器(您可以通过搜索“java preprocessor”找到很多)。一些例子是

根据您要注释掉的范围,您可以使用块注释,有时也可以使用类似

if (false) {
    . . .
}

如果一切都失败了,只需使用 . 注释掉每一行//。大多数 IDE 都有办法有效地执行此操作(并撤消它)。

PS 如果您可以使用块注释(并非总是可能,因为块注释不能嵌套在 Java 中),有一个很好的技巧可以更容易地关闭和打开注释部分。单独在一行上开始您的块注释,但以另一个以行注释开头的孤立行结束,如下所示:

/*
   <block of code ignored as comment>
//*/

然后,如果您想重新打开注释掉的部分,只需/在块的开头添加第二个:

//*
   <block of code now active>
//*/

要再次关闭代码,只需删除第一个/. (如果没有//在最后一行的开头,当您通过将 a 添加到块的开头行来*/激活代码时,悬空将是语法错误。)/

于 2013-01-08T05:13:16.443 回答
14

你必须注释掉代码,你不能在java中使用预处理器指令。

于 2013-01-08T05:09:54.463 回答
8

我假设编译器将剥离使用常量/最终标志强制执行的块内的代码?这就是您可以在项目中保留最终 apk 中未提供的代码的方式。

public final static boolean DEBUG = false;

if(DEBUG) {
    //add messy error prone code here
    //compiler will strip this out as unreachable when false
}

在这里阅读:

http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.21

于 2013-01-08T05:13:39.733 回答
1

Java 没有与 C 类似的预处理器。

由于根据标签,您使用的是 Eclipse,因此您可以简单地标记要注释掉的整个代码块,然后使用CTRL - /.

您还可以使用相同的键序列来取消注释已注释掉的块。

于 2013-01-08T05:09:26.667 回答
1

我使用的一种技术是使用m4作为 java 文件的预处理器。您编写代码classname.java.m4并使用 Makefile 或其他构建系统规则来运行 m4:

%: %.m4
        @echo "/* automatically generated from $< -- don not edit*/" >$@
        m4 $< >>$@
于 2013-01-08T05:14:28.050 回答
1

java 不提供预处理器的功能。

顺便说一句,您可以使用如下评论:

您使用的是 Eclipse,您可以简单地标记要注释掉的整个代码块,然后使用 CTRL+SHIFT+C 来注释和取消注释代码块。

于 2013-01-08T05:14:39.283 回答