Class AnnotationValue.ForDescriptionArray<U,​V>

  • Type Parameters:
    U - The array type of the annotation's value when it is not loaded.
    V - The array type of the annotation's value when it is loaded.
    All Implemented Interfaces:
    AnnotationValue<U,​V>
    Enclosing interface:
    AnnotationValue<T,​S>

    public static class AnnotationValue.ForDescriptionArray<U,​V>
    extends AnnotationValue.AbstractBase<U,​V>
    Describes a complex array that is the value of an annotation. Complex arrays are arrays that might trigger the loading of user-defined types, i.e. Class, Annotation and Enum instances.
    • Field Detail

      • unloadedComponentType

        private final java.lang.Class<?> unloadedComponentType
        The component type for arrays containing unloaded versions of the annotation array's values.
      • componentType

        private final TypeDescription componentType
        A description of the component type when it is loaded.
      • values

        private final java.util.List<? extends AnnotationValue<?,​?>> values
        A list of values of the array elements.
    • Constructor Detail

      • ForDescriptionArray

        public ForDescriptionArray​(java.lang.Class<?> unloadedComponentType,
                                   TypeDescription componentType,
                                   java.util.List<? extends AnnotationValue<?,​?>> values)
        Creates a new complex array.
        Parameters:
        unloadedComponentType - The component type for arrays containing unloaded versions of the annotation array's values.
        componentType - A description of the component type when it is loaded.
        values - A list of values of the array elements.
    • Method Detail

      • of

        public static <W extends java.lang.Enum<W>> AnnotationValue<EnumerationDescription[],​W[]> of​(TypeDescription enumerationType,
                                                                                                           EnumerationDescription[] enumerationDescription)
        Creates a new complex array of enumeration descriptions.
        Type Parameters:
        W - The type of the enumeration.
        Parameters:
        enumerationType - A description of the type of the enumeration.
        enumerationDescription - An array of enumeration descriptions.
        Returns:
        A description of the array of enumeration values.
      • of

        public static <W extends java.lang.annotation.Annotation> AnnotationValue<AnnotationDescription[],​W[]> of​(TypeDescription annotationType,
                                                                                                                        AnnotationDescription[] annotationDescription)
        Creates a new complex array of annotation descriptions.
        Type Parameters:
        W - The type of the annotation.
        Parameters:
        annotationType - A description of the type of the annotation.
        annotationDescription - An array of annotation descriptions.
        Returns:
        A description of the array of enumeration values.
      • of

        public static AnnotationValue<TypeDescription[],​java.lang.Class<?>[]> of​(TypeDescription[] typeDescription)
        Creates a new complex array of annotation descriptions.
        Parameters:
        typeDescription - A description of the types contained in the array.
        Returns:
        A description of the array of enumeration values.
      • getState

        public AnnotationValue.State getState()
        Returns the state of the represented annotation value.
        Returns:
        The state represented by this instance.
      • filter

        public AnnotationValue<U,​V> filter​(MethodDescription.InDefinedShape property,
                                                 TypeDefinition typeDefinition)
        Filters this annotation value as a valid value of the provided property.
        Parameters:
        property - The property to filter against.
        typeDefinition - The expected type.
        Returns:
        This annotation value or a new annotation value that describes why this value is not a valid value for the supplied property.
      • resolve

        public U resolve()
        Resolves the unloaded value of this annotation. The return value of this method is not defined if this annotation value is invalid.
        Returns:
        The unloaded value of this annotation.
      • load

        public AnnotationValue.Loaded<V> load​(java.lang.ClassLoader classLoader)
        Returns the loaded value of this annotation.
        Parameters:
        classLoader - The class loader for loading this value.
        Returns:
        The loaded value of this annotation.
      • hashCode

        @Enhance("hashCode")
        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object