你怎么能逃脱javadoc中的@字符?

Jay*_*ayL 173 java javadoc escaping

我怎样才能逃避@javadoc中的符号?我试图在{@code}标签内部使用它,这是<pre>标签内部.

我已经尝试过html转义&#64;序列,但这不起作用.

Boh*_*ian 257

使用{@literal}javadoc标记:

/**
 * This is an "at" symbol: {@literal @}
 */
Run Code Online (Sandbox Code Playgroud)

这个javadoc将为:

This is an "at" symbol: @
Run Code Online (Sandbox Code Playgroud)

当然,这适用于任何角色,并且是显示任何"特殊"角色的"官方支持"方式.

这也是最简单明了-你不需要知道字符的十六进制代码,并且可以读取你输入什么!

  • 我很惊讶这是被接受的,所以投了票.问题的前提:_inside {@code} tag_.{@literal}只是在{@code}标记内无效. (21认同)
  • 省略`{`并且只使用`@literal @`在`{@code}`标签内部工作. (6认同)
  • 什么?11 月 11 日 11:11?您应该在一个月前发布此信息。;-) (4认同)
  • 你如何转义 `}` 符号? (2认同)
  • @MCEmperor java 日历使用从 0 开始的月份,所以这将是第 11 个月 - 足够接近吗? (2认同)

Fra*_*k V 50

只需将其写为HTML实体:

&#064;
Run Code Online (Sandbox Code Playgroud)

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

如果要使用@字符开始一行而不解释它,请使用HTML实体@.

这意味着您可以将HTML实体用于您需要转义的任何角色,实际上您可以:

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

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

  • 这在JDK1.8中似乎不起作用 (6认同)

Yeo*_*Kim 7

我的解决方案是

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

  • 只有使用Java 8在`{@ code`中工作的东西. (3认同)

Rob*_*ave 5

从 15.0.2 开始在 javadoc 工具中修复

现在,使用 15.0.2 版本的 javadoc 工具时,此问题似乎已得到解决。

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

有一个 JDK bug 已记录https://bugs.openjdk.java.net/browse/JDK-8130754 ...当前未标记为已修复,但不再使用 javadoc 15.0.2 重现。