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东西走了。