Java多行注释是否包含字符串?

时间:2020-03-05 18:44:33  来源:igfitidea点击:

这个问题可能也同样适用于具有C样多行注释的其他语言。这是我遇到的问题。我正在Eclipse中使用Java代码,我想注释掉一段代码。但是,有一个包含字符序列" * /"的字符串,并且Eclipse认为注释应该在此结束,即使它在字符串中也是如此。它给了我很多错误,并且无法建立。

/*
   ... some Java code ...
   ... "... */ ..." ...
   ... more Java code ...
*/

Java规范是否与Eclipse对我的多行注释的解释相符?我想认为Java和/或者Eclipse可以解决这类问题。

解决方案

回答

Eclipse是正确的。注释内没有解释上下文(没有转义,等等)。参见JLS 3.7.

回答

是的,我将代码注释掉只是为了进行快速测试。我已经通过另一种方式注释了代码来测试了我需要的内容。我只是对Java和/或者Eclipse的奇怪功能感到好奇。

回答

一个简单的测试表明Eclipse是正确的:

public class Test {
  public static final void main(String[] args) throws Exception {
    String s = "This is the original string.";
    /* This is commented out.
    s = "This is the end of a comment: */ ";
    */
    System.out.println(s);
  }
}

无法使用以下命令进行编译:

Test.java:5: unclosed string literal
    s = "This is the end of a comment: */ ";

回答

我可能会做一个"批处理"多行注释,以便它用" //"注释每一行可能会有所帮助。它是Idea中的Ctrl +" /",用于注释和取消注释选定的行,Eclipse应该具有类似的功能。

回答

在Eclipse中,我们可以突出显示要注释掉的部分源代码,并使用Ctrl + /单行注释突出显示的部分中的每一行,并在行的开头加上" //"。

或者,如果我们真的想对注释进行注释,请使用Ctrl + Shift + /组合键。它将检测我们选择的块注释。但是,撤消此操作比单行注释更难。

回答

我经常只将//用于内联注释,而只将/ * * /用于注释大块内容。

许多开发人员仍然会使用/ * * /进行内联注释,因为这是他们所熟悉的,但是他们都遇到了类似这样的问题,在C语言中并没有太大关系,因为我们可以#if 0东西走了。