【问题标题】:Do Java multi-line comments account for strings?Java 多行注释是否考虑字符串?
【发布时间】:2010-09-07 04:03:03
【问题描述】:

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

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

Java 规范是否与 Eclipse 对我的多行注释的解释相匹配?我想 Java 和/或 Eclipse 会解决这类问题。

【问题讨论】:

    标签: java eclipse comments


    【解决方案1】:

    Eclipse 是正确的。评论中没有解释上下文(没有转义等)。见JLS §3.7

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        一个简单的测试表明 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: */ ";
        

        【讨论】:

          【解决方案4】:

          我只做一个“批处理”多行注释可能会有所帮助,这样它就可以用“//”来匹配每一行。在Idea中是Ctrl+"/"对选中的行进行注释和取消注释,Eclipse应该也有类似的功能。

          【讨论】:

            【解决方案5】:

            在 Eclipse 中,您可以突出显示要注释掉的源代码部分,并使用 Ctrl+/ 对突出显示部分中的每一行进行单行注释 - 在行的开头放置一个“//”。

            或者,如果您真的想对所选内容进行块注释,请使用 Ctrl+Shift+/ 组合。它将检测您选择中的块 cmets。但是,撤消这比单行 cmets 更难。

            【讨论】:

              【解决方案6】:

              我经常只使用// 进行内联注释,而使用/* */ 仅用于注释掉大块的方式。

              很多开发人员仍然会使用 /* */ 用于内联 cmets,因为这是他们所熟悉的,但他们都会遇到类似的问题,在 C 中这并不重要,因为你可以 #如果 0 把东西拿走。

              【讨论】:

                猜你喜欢
                • 2011-04-27
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-11-11
                • 1970-01-01
                • 2014-01-20
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多