Class AnnotationDescription.ForLoadedAnnotation<S extends Annotation>

java.lang.Object
net.bytebuddy.description.annotation.AnnotationDescription.AbstractBase
net.bytebuddy.description.annotation.AnnotationDescription.ForLoadedAnnotation<S>
Type Parameters:
S - The type of the annotation.
All Implemented Interfaces:
AnnotationDescription, AnnotationDescription.Loadable<S>
Enclosing interface:
AnnotationDescription

public static class AnnotationDescription.ForLoadedAnnotation<S extends Annotation> extends AnnotationDescription.AbstractBase implements AnnotationDescription.Loadable<S>
A description of an already loaded annotation.
  • Field Details

    • NO_ARGUMENT

      private static final Object[] NO_ARGUMENT
      An empty array that can be used to indicate no arguments to avoid an allocation on a reflective call.
    • annotation

      private final S extends Annotation annotation
      The represented annotation value.
    • annotationType

      private final Class<S extends Annotation> annotationType
      The annotation's loaded type which might be loaded by a different class loader than the value's annotation type but must be structurally equal to it.
  • Constructor Details

    • ForLoadedAnnotation

      protected ForLoadedAnnotation(S annotation)
      Creates a new annotation description for a loaded annotation.
      Parameters:
      annotation - The annotation to represent.
    • ForLoadedAnnotation

      private ForLoadedAnnotation(S annotation, Class<S> annotationType)
      Creates a new annotation description for a loaded annotation.
      Parameters:
      annotation - The annotation to represent.
      annotationType - The annotation's loaded type which might be loaded by a different class loader than the value's annotation type but must be structurally equal to it.
  • Method Details

    • doPrivileged

      @Enhance private static <T> T doPrivileged(PrivilegedAction<T> action)
      A proxy for java.security.AccessController#doPrivileged that is activated if available.
      Type Parameters:
      T - The type of the action's resolved value.
      Parameters:
      action - The action to execute from a privileged context.
      Returns:
      The action's resolved value.
    • of

      public static <U extends Annotation> AnnotationDescription.Loadable<U> of(U annotation)
      Creates a description of the given annotation.
      Type Parameters:
      U - The type of the annotation.
      Parameters:
      annotation - The annotation to be described.
      Returns:
      A description of the given annotation.
    • load

      public S load()
      Loads this annotation description. This causes all classes referenced by the annotation value to be loaded. Without specifying a class loader, the annotation's class loader which was used to prepare this instance is used.
      Specified by:
      load in interface AnnotationDescription.Loadable<S extends Annotation>
      Returns:
      A loaded version of this annotation description.
    • asValue

      private static Map<String,AnnotationValue<?,?>> asValue(Annotation annotation)
      Extracts the annotation values of an annotation into a property map.
      Parameters:
      annotation - The annotation to convert.
      Returns:
      A mapping of property names to their annotation value.
    • asValue

      public static AnnotationValue<?,?> asValue(Object value, Class<?> type)
      Transforms an annotation property to an annotation value.
      Parameters:
      type - The annotation's type.
      value - The annotations value.
      Returns:
      An annotation value representation.
    • getValue

      public AnnotationValue<?,?> getValue(MethodDescription.InDefinedShape property)
      Returns a value of this annotation.
      Specified by:
      getValue in interface AnnotationDescription
      Parameters:
      property - The property being accessed.
      Returns:
      The value for the supplied property.
    • prepare

      public <T extends Annotation> AnnotationDescription.Loadable<T> prepare(Class<T> annotationType)
      Links this annotation description to a given annotation type such that it can be loaded. This does not cause the values of this annotation to be loaded.
      Specified by:
      prepare in interface AnnotationDescription
      Type Parameters:
      T - The type of the annotation.
      Parameters:
      annotationType - The loaded annotation type of this annotation description.
      Returns:
      A loadable version of this annotation description.
    • getAnnotationType

      public TypeDescription getAnnotationType()
      Returns a description of the annotation type of this annotation.
      Specified by:
      getAnnotationType in interface AnnotationDescription
      Returns:
      A description of the annotation type of this annotation.