/**
* Gets the meatball icon for a nincompoop.
*
* <p>
* Example: {@code <custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" />}
*
* @author King Cong
*
*/
"${person}" 部分破坏了文档注释,因为它使用了花括号。
/**
* Gets the meatball icon for a nincompoop.
*
* <p>
* Example: {@code <custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" />}
*
* @author King Cong
*
*/
"${person}" 部分破坏了文档注释,因为它使用了花括号。
与其说是一个解决方法,不如说是一个解决方法,但如果你{@code ...}
用旧版本替换<code>...</code>
它会按照你的期望呈现花括号。
<code>{person} == ${person}</code>
不幸的是,这会破坏尖括号,因此对于原始问题,您需要转义这些:
<code><custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" /></code>
您甚至可以通过使用方便的 TextFX -> 转换 -> 编码 HTML (&<>") 让 Notepad++ 为您执行此操作来作弊。
这至少有一个好处,即在生成的 Javadoc 和 Eclipse 中的 Javadoc 视图中,一切都很好地呈现,这似乎并不理解}
和朋友。
尝试使用 HTML 转义:
${person} == ${person}
bodunbodun 解决方案的工作原理通常是在 javadocs 中也有换行符。如果您同时需要 { 和换行符,则 HTML 转义将不起作用
<pre>
{@code
<foo bar="}${bar}{@code"/>
<bar foo="}${foo}{@code"/>
}
</pre>
会给你
<foo bar="${bar}" />
<bar foo="${foo}" />
实际上我遇到了同样的问题——没有一个命题对我有用(HTML 转义不管什么原因都不起作用)。如果这有帮助 - 尝试在有问题的符号之前关闭 {@code} 并在之后重新打开它,如下所示:
{@code nincompoop=" }${person}{@code " />}
这似乎不是解决方案,但它有效,并且如果仔细使用不会破坏格式:)
至少从 Java 1.8.0_31 开始,我无法再重现该问题。您的输入按预期呈现:
<code><custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" /></code>
我的测试表明,javadoc
考虑到内部的平衡花括号@code
,并且仅在找到相应的花括号时才结束。
因此,如果代码像您的示例一样具有平衡的花括号{}
,它现在可以按预期工作。
但我仍然不知道如何处理不平衡的花括号,例如:
{@code printf"}<b>outside</b>"}
此外,行为取决于您使用的内联标签。man javadoc
明确表示对于@link
:
If you need to use the right brace (}) inside the label, then use the HTML entity notation }.
因此,在这种情况下,不可能做得更好。
不幸的是,我找不到@code
支持我的实验的类似报价。
为此找到了另一个不太出色的解决方法。它比其他的更好还是更差?我让你决定。取出{@code }
零件并将其替换为<code> </code>
。(由于尖括号,这使它全部消失。)首先<
将其包裹起来{@literal }
,使其看起来像这样{@literal<}
。现在一切都会好起来的,而且在代码中并没有太可怕地被宰杀。最终结果如下所示
/**
* Gets the meatball icon for a nincompoop.
*
* <p>
* Example: <code>{@literal<}custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" /></code>
*
* @author King Cong
*
*/
或者,如果您不喜欢{@literal<}
,则可以<
改用。结果将如下所示:
/**
* Gets the meatball icon for a nincompoop.
*
* <p>
* Example: <code> <custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" /></code>
*
* @author King Cong
*
*/
两者都不是很好的解决方案,但它们确实有效。
使用{@literal}
,所以这样做{@literal } }
。在我的测试中工作。
因此,对于您的情况,它看起来像这样:
/**
* Gets the meatball icon for a nincompoop.
*
* <p>
* Example: {@code <custom:meatball color="<%= Meatball.RED %> nincompoop="${person{@literal } }" />}
*
* @author King Cong
*
*/