How can you escape the @ character in javadoc?

JavaEscapingJavadoc

Java Problem Overview


How can I escape the @ symbol in javadoc? I am trying to use it inside a {@code} tag, which is inside <pre> tags.

I already tried the html escape &#64; sequence, but that didn't work.

Java Solutions


Solution 1 - Java

Use the {@literal} javadoc tag:

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

The javadoc for this will read:

This is an "at" symbol: @

Of course, this will work for any characters, and is the "officially supported" way of displaying any "special" characters.

It is also the most straighforward - you don't need to know the hex code of the character, and you can read what you've typed!

Solution 2 - Java

Just write it as an HTML entity:

&#064;

From the document "javadoc - The Java API Documentation Generator"

> If you want to start a line with the @ character and not have it be interpreted, use the HTML entity @.

This implies that you can use HTML entities for any character that you would need to escape, and indeed you can:

> The text must be written in HTML with HTML entities and HTML tags. You can use whichever version of HTML your browser supports. The standard doclet generates HTML 3.2-compliant code elsewhere (outside of the documentation comments) with the inclusion of cascading style sheets and frames. HTML 4.0 is preferred for generated files because of the frame sets. > > For example, entities for the less than symbol (<) and the greater than symbol (>) should be written as &lt; and &gt;. Similarly, the ampersand (&) should be written as &amp;.

Solution 3 - Java

my solution is

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

Solution 4 - Java

You got the general idea, try using the octal representation: &#064;

Solution 5 - Java

Fixed in javadoc tool from 15.0.2

This issue now appears to be fixed when using javadoc tool from 15.0.2.

That is, we no longer need to escape the @ character when using javadoc multiline {@code ... } block.

There is a JDK bug logged https://bugs.openjdk.java.net/browse/JDK-8130754 ... which is currently not marked as fixed but it no longer reproduces with javadoc 15.0.2.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJayLView Question on Stackoverflow
Solution 1 - JavaBohemianView Answer on Stackoverflow
Solution 2 - JavaFrank VView Answer on Stackoverflow
Solution 3 - JavaYeongjun KimView Answer on Stackoverflow
Solution 4 - JavaYuval AdamView Answer on Stackoverflow
Solution 5 - JavaRob BygraveView Answer on Stackoverflow