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

Joe Darcy joe.darcy at oracle.com
Thu Jun 11 05:26:44 UTC 2020


Hello,

Please review a number of small updates to the javadoc of 
java.lang.annotation.Annotation to address

     JDK-8245620: Improve Annotation.annotationType() documentation

The use of  Annotation.annotationType() vs calling getClass on an 
annotation object may not be clear so the method's javadoc is augmented 
to explain this situation. java.lang.Enum defines an analogous method 
which always returns the enum class of an enum object.

There are a number of other small improvements, including updating the 
example toString output to account for

     8162817: Annotation toString output not reusable for source input

Patch below; thanks,

-Joe

diff -r 2f75432d7eb3 
src/java.base/share/classes/java/lang/annotation/Annotation.java
--- a/src/java.base/share/classes/java/lang/annotation/Annotation.java 
Wed Jun 10 18:18:30 2020 -0400
+++ b/src/java.base/share/classes/java/lang/annotation/Annotation.java 
Wed Jun 10 22:24:55 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.hashCode}.
       * </ul>
       *
       * @return true if the specified object represents an annotation
@@ -121,7 +121,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 +130,15 @@

      /**
       * Returns the annotation type of this annotation.
+     *
+     * Note that 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