Comment pouvez-vous échapper au caractère @ dans javadoc?

183

Comment puis-je échapper au @symbole dans javadoc? J'essaie de l'utiliser dans une {@code}balise, qui se trouve à l'intérieur des <pre>balises.

J'ai déjà essayé la &#64;séquence d' échappement html , mais cela n'a pas fonctionné.

JayL
la source
Maintenant, il a commencé à s'afficher correctement après avoir ajusté une partie de l'indentation à l'intérieur du bloc @ {code}! C'était dans Eclipse si cela compte.
JayL
Je n'arrive toujours pas à le faire fonctionner
Neil Benn

Réponses:

270

Utilisez la {@literal}balise javadoc:

/**
 * This is an "at" symbol: {@literal @}
 */

Le javadoc pour cela lira:

This is an "at" symbol: @

Bien sûr, cela fonctionnera pour tous les caractères, et c'est la manière "officiellement prise en charge" d'afficher les caractères "spéciaux".

C'est aussi le plus simple - vous n'avez pas besoin de connaître le code hexadécimal du caractère, et vous pouvez lire ce que vous avez tapé!

Bohème
la source
1
Comment échapper au }symbole?
ADTC
1
@ADTC Vous ne pouvez pas. Pourquoi voudriez-vous? }n'a pas de signification particulière en html.
Bohème
Donc je suppose que vous ne pouvez le diviser qu'en deux literalbalises.
ADTC
23
Je suis surpris que cela soit accepté et tellement voté à la hausse. Prémisse de la question: à l' intérieur de la balise {@code} . {@literal} ne fonctionne tout simplement pas dans une balise {@code}.
Daniel C.Sobral
7
Omettre {et simplement utiliser @literal @fonctionne à l'intérieur d'une {@code}balise.
Brad Turek
55

Écrivez-le simplement comme une entité HTML:

&#064;

Depuis le document " javadoc - Le générateur de documentation de l'API Java "

Si vous souhaitez commencer une ligne avec le caractère @ et ne pas la faire interpréter, utilisez l'entité HTML @.

Cela implique que vous pouvez utiliser des entités HTML pour tout caractère dont vous auriez besoin pour échapper, et vous pouvez en effet:

Le texte doit être écrit en HTML avec des entités HTML et des balises HTML. Vous pouvez utiliser la version HTML prise en charge par votre navigateur. Le doclet standard génère du code compatible HTML 3.2 ailleurs (en dehors des commentaires de la documentation) avec l'inclusion de feuilles de style et de cadres en cascade. HTML 4.0 est préférable pour les fichiers générés en raison des jeux de cadres.

Par exemple, les entités pour le symbole inférieur à (<) et le symbole supérieur à (>) doivent être écrites sous la forme &lt;et &gt;. De même, l'esperluette (&) doit être écrite sous la forme &amp;.

Frank V
la source
Cela fonctionne mieux que l'expression littérale lorsqu'elle n'est pas suivie d'un espace (lors de l'écriture d'une annotation par exemple)
Bludwarf
8

ma solution est

/**
 * Mapper Test Helper.
 *
 * add the following annotations above the class
 * <pre>{@code
 * // junit5
 * @literal @ExtendWith(SpringExtension.class)
 * // junit4
 * @literal @RunWith(SpringRunner.class)
 * }</pre>
 */
Yeongjun Kim
la source
2

Vous avez l'idée générale, essayez d'utiliser la représentation octale: &#064;

Yuval Adam
la source
6
Ce n'est pas octal.
Joey
@a le point de code 0x40 en hexadécimal, qui est 64 en décimal
Binkan Salaryman
0

Une approche alternative de https://stackoverflow.com/a/46332643/208581 ... consiste à utiliser un caractère similaire mais différent plutôt que d'échapper au caractère: (Cette réponse est copiée de la réponse source)


Une façon de contourner ce problème est d'utiliser un caractère différent qui ressemble au symbole standard "@".

  1. @ (U + FF20): COMMERCIAL PLEINE LARGEUR À
  2. Ⓐ (U + 24D0): LETTRE MINUSCULE LATINE A CERCLÉE

Être similaire mais différent de

  1. @ (U + 0040): COMMERCIAL AT (le normal qui est cassé)
Rob Bygrave
la source
Cela n'a pas fonctionné pour moi car nous voulions pouvoir copier le code de doc (et ne pas forcer les utilisateurs à déboguer pendant des heures pourquoi cette ligne est rouge dans l'IDE).
Top-Master il y a