{@code}タグなどのjavadocインラインタグで中括弧をエスケープする方法

curly-braces escaping java javadoc
/ **
 *  nincompoopのミートボールアイコンを取得します。
 *  例:{@code}
 *  @作者キングコング
 *  * /

“$ \ {person}”部分は中括弧を使用しているのでdocコメントを壊します。

  36  2


ベストアンサー

回避策としての答えではありませんが、 `+ {@ code …​} `を古いバージョンの ` …​ +`に置き換えると、中括弧が期待どおりに表示されます。

{person} == ${person}

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

<custom:meatball color="<%= Meatball.RED %> nincompoop="${person}" />

便利なTextFX – > convert – > Encode HTML()を使ってNotepadにあなたのためにそれをさせることによってここでも詐欺することができます

これには、少なくとも、生成されたJavadocとEclipseの両方で見事にレンダリングされるという利点があります。Javadocビューでは、 `+} +`やフレンドを理解していないようです。

22


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

$ {person} == $ {person}

18


bodunbodunソリューションは、通常javadocに改行文字が含まれていることが原因で機能します。 \ {と改行の両方が必要な場合、HTMLエスケープは機能しません。

{@コード

}

あなたにあげる

8


私は実際に同じ問題を抱えていました – 命題のどれも私のために働きませんでした(HTMLエスケープはどんな理由のためにも働きません)。 もしそれが助けになるなら – 問題のあるシンボルの前に\ {@ code}を閉じて、後でそれを再び開いてみてください。

\ {@ code nincompoop = “*} $ \ {person} \ {@ code *” />}

これは解決策ではないようですが、うまくいきます、そして慎重に使われてもフォーマットを壊しません:)

3


少なくともJava 1.8.0_31以降は、この問題を再現できなくなりました。 入力は期待通りにレンダリングされます。

<custom:meatball color = "<%= Meatball.RED%> nincompoop =" $ {person} "/>

私のテストでは、 javadoc`は @ code`の内側のバランスの取れた中括弧を考慮に入れ、対応する中括弧が見つかった場合にのみ終了することを示しています。

あなたの例のようにコードが中括弧 `{}`のバランスをとっていれば、期待通りに動作します。

しかし、私はまだバランスの取れていない中括弧をどうするかわからない:

{@code printf "} outside"}

また、動作はどのインラインタグを使用しているかによって異なります。 man javadoc`は @ link`に対して明示的にこう言います:

ラベル内で右中括弧(})を使用する必要がある場合は、HTMLエンティティ表記}を使用してください。

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

残念ながら、私は私の実験を裏付ける `@ code`に対する同様の引用を見つけることができませんでした。

2


これに対するもう一つのすばらしい回避策を見つけました。 それは他のものより良いか悪いか? 私はあなたに決めさせます。 `+ {@ code} `の部分を取り、それを ` `に置き換えます。 (これにより、中括弧のためにすべてが消えます。)最初の ` <`を取り、それを ` {@ literal} `でラップして、この ` {@ literal <} +`のようにします。 。 これですべてが正常に表示され、コード内でそれほどひどく虐殺されることはありません。 最終結果は次のようになります

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

あるいは、 `+ {@ literal <} `が気に入らない場合は、代わりに ` <+`を使用できます。 結果は次のようになります。

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

どちらも優れた解決策ではありませんが、うまくいきます。

0


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

だからあなたの場合は、それはこのようになります:

/**
 * Gets the meatball icon for a nincompoop.
 *
 *
 * Example: {@code }
 *
 * @author King Cong
 *
 */

-1


タイトルとURLをコピーしました