Reputation: 24028
When coding in C# I have always found the tag remarks
very useful for providing notes about the implementation of a class or method, or to give information about the theory of what I was implementing. I am now using Java but I can't find an appropriate JavaDoc tag for this. Maybe in Java you accomplish this in a different manner, does anybody know?
Upvotes: 56
Views: 42562
Reputation: 1766
You can use @apiNote
, @implSpec
, and @implNote
This is a description that applies equally to all valid implementations of the method, including preconditions, postconditions, etc.
These are commentary, rationale, or examples pertaining to the API.
This is where we say what it means to be a valid default implementation (or an overridable implementation in a class), such as throws UOE
. Similarly this is where we'd describe what the default for putIfAbsent
does. It is from this box that the would-be-implementer gets enough information to make a sensible decision as to whether or not to override.
Informative notes about the implementation, such as performance characteristics that are specific to the implementation in this class in this JDK in this version, and might change. These things are allowed to vary across platforms, vendors and versions.
The proposal: add three new Javadoc tags, @apiNote
, @implSpec
, and @implNote
. (The remaining box, API Spec, needs no new tag, since that's how Javadoc is used already.) @impl{spec,note}
can apply equally well to a concrete method in a class or a default method in an interface.
So the new Javadoc tags are meant to categorize the information given in a comment. It distinguishes between the specification of the method's, class's, behavior (which is relevant for all users of the API - this is the "regular" comment and would be @apiSpec
if it existed) and other, more ephemeral or less universally useful documentation. More concretely, an API user can not rely on anything written in @implSpec
or @implNote
, because these tags are concerned with this implementation of the method, saying nothing about overriding implementations.
For more information, check the references below
Upvotes: 4
Reputation: 883
With iteration 8 of the Java programming language, developers finally have been provided with three additional tags they can use in their code's documentation – and which should meet your needs: @apiNote
, @implSpec
and @implNote
(cf., for instance, for a more detailed discussion: blog.codefx.org/java/new-javadoc-tags/).
Upvotes: 28
Reputation: 121
You can create your own custom tags too.
Here is a javadoc comment that includes the custom tag "@note":
/**
* Quark represents a quark.
*
* @note If you spin a quark, it will spin forever!
*/
public class Quark {
}
To generate javadocs for the above, run javadoc like this:
javadoc -tag note:a:"Note:" Quark.java
Source: http://www.developer.com/java/other/article.php/3085991/Javadoc-Programming.htm
Upvotes: 11
Reputation: 5023
As far as I know, there isn't any dedicated Javadoc tag for notes or remarks. Generally, the first sentence of Javadoc should give a brief description of the class/method/field. Then the full description should follow. And if you want to include any notes, a specialized paragraph with a "Note:" prepended should suffice.
/**
* Brief description. Full description of the method, generally without
* implementation details.
* <p>
* Note: Additional information, e.g. your implementation notes or remarks.
* </p>
* @param input description of the parameter
* @return description of return value
*
* @since version
* @author name of the author
*/
public boolean doSomething(String input)
{
// your code
}
Upvotes: 60
Reputation: 6875
If you think implementation details are interesting enough to be a part of the Javadoc, you should simply provide them in a paragraph in the Javadoc comment itself:
/**
* Does something.
* <p>
* <b>Implementation details:</b><br />
* Blah blah blah...
* </p>
*/
public void doSomething() {
// ...
}
Upvotes: 6