Top Description Fields Constructors Methods
org.glassfish.hk2.api

public abstract Class AnnotationLiteral<T extends Annotation>

extends Object
implements Annotation, Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable, java.lang.annotation.Annotation
Known Direct Subclasses
org.glassfish.hk2.utilities.NamedImpl, org.glassfish.hk2.utilities.ServiceLocatorUtilities.ImmediateImpl, org.glassfish.hk2.utilities.ServiceLocatorUtilities.PerLookupImpl, org.glassfish.hk2.utilities.ServiceLocatorUtilities.PerThreadImpl, org.glassfish.hk2.utilities.ServiceLocatorUtilities.InheritableThreadImpl, org.glassfish.hk2.utilities.ServiceLocatorUtilities.SingletonImpl, org.glassfish.hk2.utilities.UnqualifiedImpl
Type Parameters
<T>
the annotation type
Imports
java.io.Serializable, java.lang.annotation.Annotation, java.lang.reflect.AccessibleObject, .InvocationTargetException, .Method, .ParameterizedType, .Type, java.security.AccessController, .PrivilegedAction, java.util.Arrays

Supports inline instantiation of annotation type instances.

An instance of an annotation type may be obtained by subclassing AnnotationLiteral.

public abstract class PayByQualifier 
      extends AnnotationLiteral<PayBy>
      implements PayBy {}

An extension of AnnotationLiteral must do two things:

  1. Must have the target annotation as its generic type
  2. Must implement the target type

In particular, in-line anonymous extensions of AnnotationLiteral will not work because in-line anonymous extensions of AnnotationLiteral cannot implement the target annotation
Author
jwells

Field Summary

Modifier and TypeField and Description
private transient Class<T>
private transient Method[]
private static final long
serialVersionUID

For serialization

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
public Class<? extends Annotation>
annotationType()

Implements java.lang.annotation.Annotation.annotationType.

Returns the annotation interface of this annotation.

public boolean
equals(Object other)

Overrides java.lang.Object.equals.

Implements java.lang.annotation.Annotation.equals.

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

private static Class<?>
private Method[]
private static <T> Class<T>
getTypeParameter(Class<?> annotationLiteralSuperclass)

public int
hashCode()

Overrides java.lang.Object.hashCode.

Implements java.lang.annotation.Annotation.hashCode.

Returns the hash code of this annotation.

private static Object
invoke(Method method, Object instance)

private static void
Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAlltoStringwaitwaitwait

Field Detail

annotationTypeback to summary
private transient Class<T> annotationType
membersback to summary
private transient Method[] members
serialVersionUIDback to summary
private static final long serialVersionUID

For serialization

Constructor Detail

AnnotationLiteralback to summary
protected AnnotationLiteral()

Method Detail

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

Implements java.lang.annotation.Annotation.annotationType.

Doc from java.lang.annotation.Annotation.annotationType.

Returns the annotation interface of this annotation.

equalsback to summary
public boolean equals(Object other)

Overrides java.lang.Object.equals.

Implements java.lang.annotation.Annotation.equals.

Doc from java.lang.annotation.Annotation.equals.

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.
Annotations
@Override
getAnnotationLiteralSubclassback to summary
private static Class<?> getAnnotationLiteralSubclass(Class<?> clazz)
getMembersback to summary
private Method[] getMembers()
getTypeParameterback to summary
private static <T> Class<T> getTypeParameter(Class<?> annotationLiteralSuperclass)
Annotations
@SuppressWarnings:unchecked
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Implements java.lang.annotation.Annotation.hashCode.

Doc from java.lang.annotation.Annotation.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.)
Annotations
@Override
invokeback to summary
private static Object invoke(Method method, Object instance)
setAccessibleback to summary
private static void setAccessible(final AccessibleObject ao)