java中的嵌套多行注释

java中的嵌套多行注释,java,comments,Java,Comments,在编写实验代码时,我发现一次注释掉整个代码块非常有用。然而,我在Java中找不到一种合理的方法来实现这一点,因为我经常会注释掉嵌套块 在C或C中,如果0或如果false 我在Java中似乎找不到任何这样的等价物——任何帮助都将不胜感激。谢谢 我想您是想注释掉嵌套代码以进行调试或测试,对吗?因为在生产代码中留下大量注释掉的代码通常被认为是非常糟糕的风格 嵌套注释不是java的固有特性。那你能做什么呢?以下是一些不同的选项: 斜杠注释嵌套我能想到的最好方法是使用一个具有热键的编辑器来斜杠注释,因为可

在编写实验代码时,我发现一次注释掉整个代码块非常有用。然而,我在Java中找不到一种合理的方法来实现这一点,因为我经常会注释掉嵌套块

在C或C中,如果0或如果false


我在Java中似乎找不到任何这样的等价物——任何帮助都将不胜感激。谢谢

我想您是想注释掉嵌套代码以进行调试或测试,对吗?因为在生产代码中留下大量注释掉的代码通常被认为是非常糟糕的风格

嵌套注释不是java的固有特性。那你能做什么呢?以下是一些不同的选项:

斜杠注释嵌套我能想到的最好方法是使用一个具有热键的编辑器来斜杠注释,因为可以嵌套//,所以可以将整个代码块斜杠注释出来。Eclipse和Netbeans都有这种支持,尽管在IDE之间的工作方式上有一些细微的差异,比如它决定切换注释还是嵌套注释。通常,只要选择不同,就可以嵌套//注释

第三方预处理器也就是说,J2ME在eclipse中使用预处理器,但我认为这对桌面java没有帮助。如果您搜索它们,它们确实看起来是为eclipse编写的或与eclipse兼容的。然而,这肯定会阻碍可移植性,因为这不是标准的java特性

修改注释为了满足快速嵌套注释的需要,我经常做的另一件事是在内部注释结尾的最后两个字符之间添加空格
*/
,这样java就不会在内部注释的结尾处结束外部注释。恢复原始注释不太困难(但有点手动)。基于模式匹配的方式,解析器通常会忽略嵌套的
/*
。例如/*代码/*嵌套注释*/更多代码*/`

使用版本控制您还可以轻松地使用大多数版本控制系统来保存代码副本和要删除的代码。然后稍后使用版本控制还原/diff/merge将删除的代码取回。通常,这种解决方案被认为是最好的样式。特别是如果这个注释掉的代码需要长时间保持这种状态


if(false)如果您希望批量阻止的代码同时运行两个编译并且位于单个函数中,您可以通过在其周围添加if语句轻松禁用它,该语句的条件将永远不会为true,例如
if(false){…}
显然,这永远不会通过任何类型的lint类型代码检查工具,但是它又快又容易;-)

注释不是为了留下死代码,而是为了描述活代码

对于极少数需要这样做的情况,使用IDE注释所需的行(eclipse中的
CTRL+/
)就足够了

如果这是一种常见做法,请重新思考您的流程和代码。并且可以随意删除代码并将其提交给SCM。如果你需要它,它就不会丢失。

你可以选择if(false){}。java并不真正编译C或C++的方式,但是java编译器应该足够聪明,跳过整个部分(一旦确定这个if语句永远不会被评估为true)。这只适用于注释掉函数中的代码

或者,如果您有一个好的IDE,比如eclipse或notepad++,您可以使用内置的快捷键,使用//注释出多行

Eclipse=ctrl+/(抑制以取消注释)
N++=ctrl+k(shift+crtl+k取消注释)

仅适用于日食者:

  • 选择要提交的行
  • 一旦您要提交它们,请按
    Ctrl+/
    (每行以
    /
    开头)
  • 选择要提交的行(包括步骤1中提交的行)
  • 再次按下
    Ctrl+/
    ,您将提交所有这些文件

  • 附言:
    按一下Ctrl+/将提交行,再按一下将取消提交行。

    java中没有预处理器,因此没有ifdef,所以该方法无法工作。一个建议是编写一个函数来实现测试代码;当您想要删除它时,让它立即返回(出于调试目的)大多数IDE都有一个函数,可以在所有选定行的开头添加和删除
    /
    (我认为它在eclipse中是ctrl+/,例如IIRC)。但是,我不知道有什么方法可以做任何外部的事情,比如
    #if 0
    …在方法内部,您可以使用
    if(false){
    ,或者使用IDE功能将
    /
    放在块中的所有行之前(在eclipse ctrl-/选择代码块时,这是一个切换),而不管使用哪种java语言(JLS)may宣称,这看起来像是一个微不足道的解析器更改。这是“最被拒绝”的功能吗?我已经使用Eclipse好几年了,从来都不知道
    ctrl-/
    。谢谢。这真的不是那么“罕见”需要在开发过程中暂时禁用代码块。事实上,Java没有一种干净的方法来做到这一点,这是IMHO的一个缺点。谢谢你——我现在使用的是
    if(false)
    选项。是的,这不是生产代码:)