RFR of JDK-8245620: Improve Annotation.annotationType() documentation
Joe Darcy
joe.darcy at oracle.com
Thu Jun 11 17:11:07 UTC 2020
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