如何在javadoc中转义@字符?

我如何在javadoc转义@符号?我试图在{@code}标记中使用它,这是在<pre>标记中。

我已经尝试了html转义&#64;序列,但这没有工作。

43950 次浏览

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

把它写成HTML实体:

&#064;

从文档"javadoc——Java API文档生成器"

如果你想以@字符开始一行,并且不希望它被解释,请使用HTML实体@。

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

文本必须用HTML实体和HTML标记编写。您可以使用浏览器支持的HTML版本。标准doclet在其他地方生成符合HTML 3.2的代码(在文档注释之外),并包含级联样式表和框架。HTML 4.0是首选的生成文件,因为帧集。

例如,小于符号(<)和大于符号(>)的实体应该被写成&lt;&gt;。类似地,&号(&)应该写成&amp;

使用{@literal} javadoc标记:

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

它的javadoc代码如下:

This is an "at" symbol: @

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

它也是最直接的-你不需要知道字符的十六进制代码,而且你可以读取你输入的东西!

我的解决方案是

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

在15.0.2版本的javadoc工具中修正

从15.0.2开始使用javadoc工具时,此问题现在似乎已修复。

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

有一个JDK错误记录https://bugs.openjdk.java.net/browse/JDK-8130754…它目前没有被标记为固定的,但它不再在javadoc 15.0.2中复制。