如何在javadoc内联标记中转义花括号,例如{@code}标记

38 java javadoc escaping curly-braces

/**
 * Gets the meatball icon for a nincompoop.
 * 
 * <p>
 * Example: {@code <custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" />}
 * 
 * @author King Cong
 * 
 */
Run Code Online (Sandbox Code Playgroud)

"$ {person}"部分会破坏文档注释,因为它使用花括号.

Joe*_*ney 23

作为一种解决方法,答案并非如此,但如果您{@code ...}使用旧版本进行替换,<code>...</code>它将呈现您期望的花括号.

<code>{person} == ${person}</code>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这打破了尖括号,所以对于原始问题,你需要逃避这些:

<code>&lt;custom:meatball color="&lt;%= Meatball.RED %&gt; nincompoop="${person}" /&gt;</code>
Run Code Online (Sandbox Code Playgroud)

您甚至可以通过让Notepad ++为您做到这一点来欺骗,方便的TextFX - >转换 - >编码HTML(&<>").

这至少有一个好处,一切都可以在生成的Javadoc和Javadoc视图中的Eclipse中很好地呈现,而Javadoc视图似乎无法理解&#125;和朋友.


Joh*_*lla 19

尝试使用HTML转义:

$&#123;person&#125; == ${person}
Run Code Online (Sandbox Code Playgroud)

  • 很遗憾,这是最好的答案. (10认同)
  • 似乎在Eclipse Javadoc View中无法正确呈现. (6认同)

tru*_*ung 9

bodunbodun解决方案的工作原理通常发生在javadocs中也有换行符.如果你想要{和换行符',HTML转义将不起作用

<pre>
{@code
<foo bar="}${bar}{@code"/>
<bar foo="}${foo}{@code"/>
}
</pre>
Run Code Online (Sandbox Code Playgroud)

会给你

<foo bar="${bar}" />
<bar foo="${foo}" />
Run Code Online (Sandbox Code Playgroud)