221

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.

1
  • Now it has started displaying fine after I adjusted some of the indentation inside the @{code} block! This was in Eclipse if it matters. Commented Feb 18, 2010 at 18:01

5 Answers 5

319
+50

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!

Sign up to request clarification or add additional context in comments.

10 Comments

How do you escape the } symbol?
I'm surprised this is accepted and so up-voted. Premise of the question: inside {@code} tag. {@literal} just doesn't work inside a {@code} tag.
What? The 11th of the month, '11 at 11:11? You should have posted this exactly a month earlier. ;-)
@MCEmperor the java Calendar uses 0-based months, so this would be month #11 there - close enough?
Omitting the { and just using @literal @ works inside of a {@code} tag.
|
72

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;.

1 Comment

It works better than the literal expression when not followed by a space (when writting annotation for example)
12

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> */ 

Comments

6

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.

1 Comment

This is great news! In between this answer is better than the accepted one!
2

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

1 Comment

@ has the codepoint 0x40 in hexadecimal, which is 64 in decimal

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.