APIdia Launch Partner
Top Description Methods
java.lang.annotation

public Interface Annotation

Known Direct Subinterfaces
java.lang.annotation.Documented, java.lang.annotation.Inherited, java.lang.annotation.Native, java.lang.annotation.Repeatable, java.lang.annotation.Retention, java.lang.annotation.Target, jdk.internal.RequiresIdentity, jdk.internal.ValueBased, jdk.internal.javac.NoPreview, jdk.internal.javac.ParticipatesInPreview, jdk.internal.javac.PreviewFeature, jdk.internal.javac.PreviewFeature.JEP, jdk.internal.javac.Restricted, jdk.internal.misc.ScopedMemoryAccess.Scoped, jdk.internal.reflect.CallerSensitive, jdk.internal.reflect.CallerSensitiveAdapter, jdk.internal.vm.annotation.AOTRuntimeSetup, jdk.internal.vm.annotation.AOTSafeClassInitializer, jdk.internal.vm.annotation.ChangesCurrentThread, jdk.internal.vm.annotation.Contended, jdk.internal.vm.annotation.DontInline, jdk.internal.vm.annotation.ForceInline, jdk.internal.vm.annotation.Hidden, jdk.internal.vm.annotation.IntrinsicCandidate, jdk.internal.vm.annotation.JvmtiHideEvents, jdk.internal.vm.annotation.JvmtiMountTransition, jdk.internal.vm.annotation.ReservedStackAccess, jdk.internal.vm.annotation.Stable, jdk.internal.vm.annotation.TrustFinalFields, java.lang.Deprecated, java.lang.FunctionalInterface, java.lang.Override, java.lang.SafeVarargs, java.lang.SuppressWarnings, java.io.Serial, java.lang.invoke.InjectedProfile, java.lang.invoke.LambdaForm.Compiled, java.lang.invoke.MethodHandle.PolymorphicSignature

The common interface extended by all annotation interfaces. Note that an interface that manually extends this one does not define an annotation interface. Also note that this interface does not itself define an annotation interface. More information about annotation interfaces can be found in section 9.6 of The Java Language Specification. The java.lang.reflect.AnnotatedElement interface discusses compatibility concerns when evolving an annotation interface from being non-repeatable to being repeatable.
Author
Josh Bloch
Since
1.5

Method Summary

Modifier and TypeMethod and Description
public Class<? extends Annotation>

Returns:

the annotation interface of this annotation
annotationType
()

Returns the annotation interface of this annotation.

public boolean

Returns:

true if the specified object represents an annotation that is logically equivalent to this one, otherwise false
equals
(Object obj)

Returns true if the specified object represents an annotation that is logically equivalent to this one.

public int

Returns:

the hash code of this annotation
hashCode
()

Returns the hash code of this annotation.

public String

Returns:

a string representation of this annotation
toString
()

Returns a string representation of this annotation.

Method Detail

annotationTypeback to summary
public Class<? extends Annotation> annotationType()

Returns the annotation interface of this annotation.

API Note

Implementation-dependent classes are used to provide the implementations of annotations. Therefore, calling getClass on an annotation will return an implementation-dependent class. In contrast, this method will reliably return the annotation interface of the annotation.

Returns:Class<? extends Annotation>

the annotation interface of this annotation

See Also
Enum#getDeclaringClass
equalsback to summary
public boolean equals(Object obj)

Returns true if the specified object represents an annotation that is logically equivalent to this one. In other words, returns true if the specified object is an instance of the same annotation interface as this instance, all of whose members are equal to the corresponding member of this annotation, as defined below:

  • Two corresponding primitive typed members whose values are x and y are considered equal if x == y, unless their type is float or double.
  • Two corresponding float members whose values are x and y are considered equal if Float.valueOf(x).equals(Float.valueOf(y)). (Unlike the == operator, NaN is considered equal to itself, and 0.0f unequal to -0.0f.)
  • Two corresponding double members whose values are x and y are considered equal if Double.valueOf(x).equals(Double.valueOf(y)). (Unlike the == operator, NaN is considered equal to itself, and 0.0 unequal to -0.0.)
  • Two corresponding String, Class, enum, or annotation typed members whose values are x and y are considered equal if x.equals(y). (Note that this definition is recursive for annotation typed members.)
  • Two corresponding array typed members x and y are considered equal if Arrays.equals(x, y), for the appropriate overloading of Arrays.equals.
Returns:boolean

true if the specified object represents an annotation that is logically equivalent to this one, otherwise false

hashCodeback to summary
public int hashCode()

Returns the hash code of this annotation.

The hash code of an annotation is the sum of the hash codes 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 String#hashCode()) XOR the hash code of the member-value. The hash code of a member-value depends on its type as defined below:

  • The hash code of a primitive value v is equal to WrapperType.valueOf(v).hashCode(), where WrapperType is the wrapper type corresponding to the primitive type of v (Byte, Character, Double, Float, Integer, Long, Short, or Boolean).
  • The hash code of a string, enum, class, or annotation member-value v is computed as by calling v.hashCode(). (In the case of annotation member values, this is a recursive definition.)
  • The hash code of an array member-value is computed by calling the appropriate overloading of Arrays.hashCode on the value. (There is one overloading for each primitive type, and one for object reference types.)
Returns:int

the hash code of this annotation

toStringback to summary
public String toString()

Returns a string representation of this annotation. The details of the representation are implementation-dependent, but the following may be regarded as typical:

  @com.example.Name(first="Duke", middle="of", last="Java")
Returns:String

a string representation of this annotation