Search code examples
javajavadoccopy-paste

how to copy javadoc from variables to constructor


I am having some problems with Javadoc. I have written documentation for variables of a class. And then I want to use that same javaDoc in the constructor. I didn't seem to be able to use @link or @see for this purpose (Well, Netbeans didn't show the result I liked).

It seems like a hassle to copy-paste everything, so is there a tag/parameter to copy javaDoc?

Here is the example:

/**
 * The id for identifying this specific detectionloop. It is assumed the
 * Detectionloops are numbered in order, so Detectionloop '2' is always next to
 * Detectionloop '1'. 
 */
private int id;

/**
 * Constructor for a detectionloop. Detectionloops are real-world sensors
 * that register and identify a kart when it passes by. Please note that
 * this class is still under heavy development and the parameters of the
 * constructor may change along the way!
 *
 * @param id The id for identifying this specific detectionloop. It is assumed
 *    the Detectionloops are numbered in order, so Detectionloop '2' is always
 *    next to Detectionloop '1'. 
 * @param nextID The id of the next detectionloop is sequense.
 * @param distanceToNext The distance in meters to the next detectionloop.
 */
DetectionLoop(int id, int nextID, int distanceToNext) {
    this.distanceToNext = distanceToNext;
    this.id = id;
    if (Detectionloops.containsKey(id)) {
        throw new IllegalArgumentException("Detectionloop " + this.id
                + " already exist, please use a unused identification!");
    } else {
        Detectionloops.put(this.id, this);
    }
}

Solution

  • This is unfortunately impossible using standard Javadoc. As a workaround, you could use the @link tag to reference the field, and then people could click the link to get at its documentation. This would require a click, but at least you don't have to maintain redundant documentation:

    /**
     * ...
     * @param id the value for {@link #id}
    

    The only other way of solving this that I know of is to write a custom doclet, which would allow you to define your own tag for your purpose.