Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javadoc中转义@字符?_Java_Escaping_Javadoc - Fatal编程技术网

如何在javadoc中转义@字符?

如何在javadoc中转义@字符?,java,escaping,javadoc,Java,Escaping,Javadoc,如何在javadoc中转义@符号?我试图在{@code}标记内使用它,该标记位于标记内 @ 我已经尝试过html escape@顺序,但这不起作用。你得到了大致的想法,试着使用八进制表示法:@只需将其作为HTML实体编写即可: /** * This is an "at" symbol: {@literal @} */ 来自文档“” 如果希望以@字符开头的行不进行解释,请使用HTML实体@ 这意味着您可以对需要转义的任何字符使用HTML实体,实际上您可以:

如何在javadoc中转义
@
符号?我试图在
{@code}
标记内使用它,该标记位于
标记内

@

我已经尝试过html escape
@顺序,但这不起作用。

你得到了大致的想法,试着使用八进制表示法:
@

只需将其作为HTML实体编写即可:

/**
 * This is an "at" symbol: {@literal @}
 */
来自文档“”

如果希望以@字符开头的行不进行解释,请使用HTML实体@

这意味着您可以对需要转义的任何字符使用HTML实体,实际上您可以:

文本必须用带有HTML实体和HTML标记的HTML编写。您可以使用浏览器支持的任何HTML版本。标准doclet在其他地方(文档注释之外)生成符合HTML3.2的代码,包括级联样式表和框架。由于框架集的原因,HTML 4.0是生成文件的首选

例如,小于符号()的实体应写成
。类似地,符号(&)应写为
&

使用javadoc标记:

This is an "at" symbol: @
这方面的javadoc将为:

/**
 * Mapper Test Helper.
 *
 * add the following annotations above the class
 * <pre>{@code
 * // junit5
 * @literal @ExtendWith(SpringExtension.class)
 * // junit4
 * @literal @RunWith(SpringRunner.class)
 * }</pre>
 */
当然,这适用于任何字符,并且是显示任何“特殊”字符的“官方支持”方式

它也是最严格的——你不需要知道字符的十六进制代码,你可以阅读你键入的内容

我的解决方案是

/**
*映射测试助手。
*
*在类上方添加以下注释
*{@code
*//junit5
*@literal@ExtendWith(SpringExtension.class)
*//junit4
*@literal@RunWith(SpringRunner.class)
* }
*/
不要这样做 当有任何可能会有人从javadoc复制/粘贴代码时


另一种方法来自。。。是使用相似但不同的字符,而不是转义字符:(此答案从源答案复制)


解决这个问题的一种方法是使用与标准“@”符号相似的不同字符

  • @(U+FF20):在
  • ⓐ (U+24D0):带圆圈的拉丁文小写字母A
  • 相似但不同于

  • @(U+0040):商用AT(断开的正常AT)
  • 在15.0.2版本的javadoc工具中修复 现在,当使用15.0.2版本的javadoc工具时,这个问题似乎已经得到了解决

    也就是说,当使用javadoc multiline
    {@code…}
    块时,我们不再需要转义@字符


    有一个JDK错误被记录。。。它当前未标记为固定,但不再使用javadoc 15.0.2进行复制。

    在我调整了@{code}块中的一些缩进后,现在它开始显示良好!如果有关系的话,这是在Eclipse中。我仍然无法让它工作。你如何摆脱
    }
    符号?@ADTC你不能。你为什么要这么做
    }
    在html中没有特殊意义。我很惊讶这一点被接受,所以投票表决。问题的前提:在{@code}标记内。{@literal}在{@code}标记中不起作用。什么?11月11日11点11分?您应该在一个月前发布此消息。;-)省略
    {
    而只使用
    @literal@
    可以在
    {@code}
    标记中工作。
    @
    具有十六进制的代码点0x40,在不后跟空格的情况下(例如,在编写注释时),它比literal表达式工作得更好不适用于我,因为我们希望能够从doc中复制代码(并且不强迫用户在几个小时内调试IDE中为什么该行是红色的)。出于兴趣,什么适用于@Top Master?
    @literal@
    似乎有效,但前提是我的
    {@code
    后面跟一个enter(不能与
    @code
    在同一行),唯一的问题是符号前有一个意外的空格,比如“@”而不是“@”符号(例如,
    @Override
    就没有问题)。我无法想象任何可混淆的情况(U+ff20或U+24d0)这是一个好主意。实际上,在某些情况下,从Javadoc复制是合法的,可混淆的内容将导致任何清晰可见(但仍然令人困惑)的内容一个几乎无法检测到的错误的语法错误。考虑到存在完全有效的替代方案,这一点尤其难以接受。只需说这个问题在JDK 15.0.2或更早版本中已经解决。也就是说,我不再需要使用javadoc工具从15.0.2中转义@。