如何在javadoc中转义@字符?

214

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

我已经尝试了HTML转义序列&#64;,但并没有起作用。


现在在我调整了@{code}块内部的一些缩进后,它开始正常显示了!如果有关系的话,这是在Eclipse中。 - JayL
我仍然无法让它工作。 - Neil Benn
5个回答

310

使用 {@literal} javadoc 标记:

/**
 * This is an "at" symbol: {@literal @}
 */

这个的javadoc将会是:

This is an "at" symbol: @

当然,这对于任何字符都适用,并且是显示任何“特殊”字符的“官方支持”方式。

这也是最简单直接的方法 - 您不需要知道字符的十六进制代码,而且您可以读取您所键入的内容!


2
你如何转义 } 符号? - ADTC
33
我很惊讶这篇文章被接受并且获得了很多赞。问题的前提是:在 {@code} 标签内部。{@literal} 不能在 {@code} 标签内起作用。 - Daniel C. Sobral
4
什么?一个月中的第11天,'11点11分?你应该早一个月发布这个。;-) - MC Emperor
2
@MCEmperor Java的日历使用0作为月份起始,所以这里是第11个月-足够接近了吗? - Bohemian
8
{@code} 标签内,省略 { 直接使用 @literal @ 是可行的,且不会改变原来的意思。 - Brad Turek
显示剩余5条评论

67

只需将其编写为 HTML 实体:

&#064;

来自文档“javadoc - The Java API Documentation Generator

如果您想要以字符@开头的行,且不希望其被解释,请使用HTML实体@。

这意味着您可以为您需要转义的任何字符使用HTML实体,确实如此:

文本必须用HTML实体和HTML标签编写。您可以使用浏览器支持的任何版本的HTML。标准的doclet在其他地方(文档注释之外)生成符合HTML 3.2规范的代码,并包含层叠样式表和框架。由于框架集的原因,生成的文件首选HTML 4.0。

例如,小于号(<)和大于号(>)的实体应写为&lt;&gt;。同样,应将&(&)写为&amp;


1
当不加空格时(例如在编写注释时),它比字面表达式更有效。 - Bludwarf

12

我的解决方案是

/**
 * Mapper Test Helper.
 *
 * add the following annotations above the class
 * <pre>{@code
 * // junit5
 * @literal @ExtendWith(SpringExtension.class)
 * // junit4
 * @literal @RunWith(SpringRunner.class)
 * }</pre>
 */

4

从 15.0.2 版本的 javadoc 工具中修复

使用 15.0.2 版本的 javadoc 工具时,这个问题似乎已经得到了解决。

也就是说,在使用 javadoc 多行 {@code ... } 块时,我们不再需要转义 @ 字符。

虽然 JDK 存在一个已记录的 bug(https://bugs.openjdk.java.net/browse/JDK-8130754),但它目前没有被标记为已修复,不过在 javadoc 15.0.2 中已经不再出现该问题。


2
你已经有了大概的想法,试着使用八进制表示:&#064;

@ 的编码点为十六进制的0x40,即十进制的64。 - Binkan Salaryman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接