RFR of JDK-8245620: Improve Annotation.annotationType() documentation

Pavel Rappo pavel.rappo at oracle.com
Thu Jun 11 17:58:14 UTC 2020


Looks good.

> On 11 Jun 2020, at 18:11, Joe Darcy <joe.darcy at oracle.com> wrote:
> 
> Hi Pavel,
> 
> On 6/11/2020 2:54 AM, Pavel Rappo wrote:
>> Joe,
>> 
>> There is a typo:
>> 
>> *    appropriate overloading of {@link java.util.Arrays#equals Arrays.hashCode}.
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^  ~~~~~~~~~~~^
>> 
>> Since we are in this area, is it possible to rephrase (or at least re-punctuate) the doc comment for java.lang.annotation.Annotation#hashCode? The reason is that it uses way too many successive colons:
> 
> Good catch.
> 
> Revised patch below will fix this issue, remove several of the colons, and use @apiNote as Alan suggested.
> 
> Thanks,
> 
> -Joe
> 
> diff -r 16081904714f src/java.base/share/classes/java/lang/annotation/Annotation.java
> --- a/src/java.base/share/classes/java/lang/annotation/Annotation.java Thu Jun 11 18:08:29 2020 +0200
> +++ b/src/java.base/share/classes/java/lang/annotation/Annotation.java Thu Jun 11 10:09:04 2020 -0700
> @@ -31,7 +31,7 @@
>   * an annotation type.  Also note that this interface does not itself
>   * define an annotation type.
>   *
> - * More information about annotation types can be found in section 9.6 of
> + * More information about annotation types can be found in section {@jls 9.6} of
>   * <cite>The Java™ Language Specification</cite>.
>   *
>   * The {@link java.lang.reflect.AnnotatedElement} interface discusses
> @@ -72,7 +72,7 @@
>       *
>       *    <li>Two corresponding array typed members {@code x} and {@code y}
>       *    are considered equal if {@code Arrays.equals(x, y)}, for the
> -     *    appropriate overloading of {@link java.util.Arrays#equals}.
> +     *    appropriate overloading of {@link java.util.Arrays#equals Arrays.equals}.
>       * </ul>
>       *
>       * @return true if the specified object represents an annotation
> @@ -81,17 +81,15 @@
>      boolean equals(Object obj);
> 
>      /**
> -     * Returns the hash code of this annotation, as defined below:
> +     * Returns the hash code of this annotation.
>       *
>       * <p>The hash code of an annotation is the sum of the hash codes
> -     * of its members (including those with default values), as defined
> -     * below:
> +     * of its members (including those with default values).
>       *
>       * The hash code of an annotation member is (127 times the hash code
>       * of the member-name as computed by {@link String#hashCode()}) XOR
> -     * the hash code of the member-value, as defined below:
> -     *
> -     * <p>The hash code of a member-value depends on its type:
> +     * the hash code of the member-value.
> +     * The hash code of a member-value depends on its type as defined below:
>       * <ul>
>       * <li>The hash code of a primitive value <i>{@code v}</i> is equal to
>       * <code><i>WrapperType</i>.valueOf(<i>v</i>).hashCode()</code>, where
> @@ -121,7 +119,7 @@
>       * of the representation are implementation-dependent, but the following
>       * may be regarded as typical:
>       * <pre>
> -     *   @com.acme.util.Name(first=Alfred, middle=E., last=Neuman)
> +     *   @com.example.Name(first="Duke", middle="of", last="Java")
>       * </pre>
>       *
>       * @return a string representation of this annotation
> @@ -130,7 +128,15 @@
> 
>      /**
>       * Returns the annotation type of this annotation.
> +     *
> +     * @apiNote Implementation-dependent classes are used to provide
> +     * the implementations of annotations. Therefore, calling {@link
> +     * #getClass getClass} on an annotation will return an
> +     * implementation-dependent class. In contrast, this method will
> +     * reliably return the annotation type of the annotation.
> +     *
>       * @return the annotation type of this annotation
> +     * @see Enum#getDeclaringClass
>       */
>      Class<? extends Annotation> annotationType();
>  }
> 



More information about the core-libs-dev mailing list