【问题标题】: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 把东西拿走。