45
/**
 * Gets the meatball icon for a nincompoop.
 * 
 * <p>
 * Example: {@code <custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" />}
 * 
 * @author King Cong
 * 
 */

「${person}」の部分は中かっこを使用しているため、ドキュメントのコメントが壊れています。

4

7 に答える 7

28

回避策としての答えはあまりありませんが{@code ...}、古いバージョン<code>...</code>に置き換えると、中括弧が期待どおりにレンダリングされます。

<code>{person} == ${person}</code>

残念ながら、これは山括弧を壊すため、元の質問にはこれらをエスケープする必要があります:

<code>&lt;custom:meatball color="&lt;%= Meatball.RED %&gt; nincompoop="${person}" /&gt;</code>

便利な TextFX -> convert -> Encode HTML (&<>") を使用して、Notepad++ にそれを実行させることで、ここでチートすることもできます。

これには少なくとも、生成された Javadoc と Eclipse の Javadoc ビューの両方で、すべてが適切にレンダリングされるという利点が&#125;あります。

于 2010-08-04T08:24:14.753 に答える
24

HTMLエスケープを使用してみてください。

$&#123;person&#125; == ${person}
于 2009-03-15T03:08:43.933 に答える
9

bodunbodun ソリューションは、通常、javadocs にも改行がある場合に機能します。{ と改行の両方が必要な場合、HTML エスケープは機能しません

<pre>
{@code
<foo bar="}${bar}{@code"/>
<bar foo="}${foo}{@code"/>
}
</pre>

あなたにあげます

<foo bar="${bar}" />
<bar foo="${foo}" />
于 2012-07-28T08:45:18.357 に答える
3

私は実際に同じ問題を抱えていました-どの命題もうまくいきませんでした(何らかの理由でHTMLエスケープが機能しません)。問題が解決しない場合は、次のように、問題のあるシンボルの前にある {@code} を閉じてから再度開いてみてください。

{@code nincompoop=" }${person}{@code " />}

これは解決策のようには見えませんが、うまく機能し、注意深く使用すれば書式設定が壊れることはありません:)

于 2011-03-08T17:48:05.777 に答える
3

少なくとも Java 1.8.0_31 では、この問題を再現できません。入力は期待どおりにレンダリングされます。

<code>&lt;custom:meatball color="&lt;%= Meatball.RED %&gt; nincompoop="${person}" /&gt;</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 &#125;.

したがって、その場合、これ以上改善することは不可能です。

@code残念ながら、私の実験を裏付ける同様の引用は見つかりませんでした。

于 2015-03-06T10:37:44.787 に答える
1

これに対する恒星とは言えない別の回避策を見つけました。それは他のものより良いですか、それとも悪いですか?あなたに決めさせます。パーツを取り、{@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<}、代わりに を使用できます&lt;。結果は次のようになります。

/**
 * Gets the meatball icon for a nincompoop.
 * 
 * <p>
 * Example: <code> &lt;custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" /></code>
 * 
 * @author King Cong
 * 
 */

どちらも優れたソリューションではありませんが、機能します。

于 2015-08-12T04:38:37.620 に答える
-1

を使用する{@literal}ので、これを行います{@literal } }。私のテストで動作します。

したがって、あなたの場合、次のようになります。

/**
 * Gets the meatball icon for a nincompoop.
 * 
 * <p>
 * Example: {@code <custom:meatball color="<%= Meatball.RED %> nincompoop="${person{@literal } }" />}
 * 
 * @author King Cong
 * 
 */
于 2015-06-30T19:43:16.380 に答える