Class RParameter

  • All Implemented Interfaces:
    Serializable

    public class RParameter
    extends Object
    Wraps a Parameter giving easy access to its type information.
    Author:
    David B. Bracewell
    See Also:
    Serialized Form
    • Method Detail

      • getElement

        public Parameter getElement()
        Gets the AnnotatedElement
        Returns:
        the AnnotatedElement object
      • getModifiers

        public int getModifiers()
        Gets the modifiers on this field.
        Returns:
        the modifiers
      • getName

        public String getName()
        Gets the name of the element
        Returns:
        the name of the element
      • getType

        public Type getType()
        Gets the type of the element
        Returns:
        the type of the element
      • isTypeCompatible

        public boolean isTypeCompatible​(@NonNull
                                        @NonNull Type type)
        Determines if the given type is compatible with the type of this parameter
        Parameters:
        type - the type to check
        Returns:
        True if the given type is assignable to this parameter
      • owner

        public <T extends RExecutable<?,​T>> T owner()
        Gets the executable that this parameter belongs to
        Type Parameters:
        T - the executable type parameter
        Returns:
        the Executable that this parameter belongs to
      • toString

        public String toString()
      • getAnnotation

        public final <A extends Annotation> A getAnnotation​(Class<A> annotationClass)
        Gets the annotation of the given class present on this object.
        Type Parameters:
        A - the annotation type parameter
        Parameters:
        annotationClass - the annotation class
        Returns:
        the annotation (null if does not exist)
      • getAnnotation

        public final <A extends Annotation> A getAnnotation​(@NonNull
                                                            @NonNull Class<A> annotationClass,
                                                            boolean onlyDirect)
        Gets the annotation of the given class on this object. When onlyDirect is true it will only return annotations directly present via getDeclaredAnnotation otherwise will return any instance present via getAnnotation.
        Type Parameters:
        A - the annotation type parameter
        Parameters:
        annotationClass - the annotation class
        onlyDirect - True - only declared annotations, False present annotations
        Returns:
        the annotation (null if does not exist)
      • getAnnotations

        public final Annotation[] getAnnotations​(boolean onlyDirect)
        Gets all annotations on this object. When onlyDirect is true it will only return annotations directly present via getDeclaredAnnotations otherwise will return any instance present via getAnnotations.
        Parameters:
        onlyDirect - True - only declared annotations, False present annotations
        Returns:
        the array of Annotation
      • getAnnotations

        public final Annotation[] getAnnotations()
        Gets all annotations present on this object.
        Returns:
        the array of Annotation
      • getAnnotations

        public final <A extends Annotation> A[] getAnnotations​(@NonNull
                                                               @NonNull Class<A> annotationClass,
                                                               boolean onlyDirect)
        Gets all annotations on this object. When onlyDirect is true it will only return annotations directly present via getDeclaredAnnotationsByType otherwise will return any instance present via getAnnotationsByType.
        Type Parameters:
        A - the annotation type parameter
        Parameters:
        annotationClass - the annotation class
        onlyDirect - True - only declared annotations, False present annotations
        Returns:
        the array of Annotation
      • getAnnotations

        public final <A extends Annotation> A[] getAnnotations​(@NonNull
                                                               @NonNull Class<A> annotationClass)
        Gets all associated annotations of given type on this object.
        Type Parameters:
        A - the annotation type parameter
        Parameters:
        annotationClass - the annotation class
        Returns:
        the array of Annotation
      • isAnnotationDeclared

        @SafeVarargs
        public final boolean isAnnotationDeclared​(@NonNull
                                                  @NonNull Class<? extends Annotation>... annotationClasses)
        Determines if any of the given annotations are declared on this object
        Parameters:
        annotationClasses - the annotation classes
        Returns:
        True - if any of the given annotations are declared on this object
      • isAnnotationPresent

        @SafeVarargs
        public final boolean isAnnotationPresent​(@NonNull
                                                 @NonNull Class<? extends Annotation>... annotationClasses)
        Determines if any of the given annotations are present on this object
        Parameters:
        annotationClasses - the annotation classes
        Returns:
        True - if any of the given annotations are present on this object
      • processAnnotation

        public final <A extends Annotation,​O> O processAnnotation​(@NonNull
                                                                        @NonNull Class<A> annotationClass,
                                                                        @NonNull
                                                                        @NonNull CheckedFunction<? super A,​? extends O> function)
                                                                 throws ReflectionException
        Applies the given CheckedBiFunction to this object with the given annotation if it is present on the object.
        Type Parameters:
        A - the annotation type parameter
        O - the return type parameter
        Parameters:
        annotationClass - the annotation class
        function - the function to apply
        Returns:
        the return value of the function or null if no annotation was present
        Throws:
        ReflectionException - Something went wrong during reflection
      • processAnnotations

        public final <A extends Annotation,​O> List<O> processAnnotations​(@NonNull
                                                                               @NonNull Class<A> annotationClass,
                                                                               @NonNull
                                                                               @NonNull CheckedFunction<? super A,​? extends O> function)
                                                                        throws ReflectionException
        Applies the given CheckedBiFunction to this object and all instances of the given annotation present on the object.
        Type Parameters:
        A - the annotation type parameter
        O - the return type parameter
        Parameters:
        annotationClass - the annotation class
        function - the function to apply
        Returns:
        A list of the return values of the function or null if no annotation was present
        Throws:
        ReflectionException - Something went wrong during reflection
      • withAnnotation

        public final <A extends Annotation> V withAnnotation​(@NonNull
                                                             @NonNull Class<A> annotationClass,
                                                             @NonNull
                                                             @NonNull CheckedConsumer<? super A> consumer)
                                                      throws ReflectionException
        Applies the given CheckedBiConsumer to this object with the given annotation if it is present on the object.
        Type Parameters:
        A - the annotation type parameter
        Parameters:
        annotationClass - the annotation class
        consumer - the consumer to apply
        Returns:
        This object
        Throws:
        ReflectionException - Something went wrong during reflection
      • withAnnotations

        public final <A extends Annotation> V withAnnotations​(@NonNull
                                                              @NonNull Class<A> annotationClass,
                                                              @NonNull
                                                              @NonNull CheckedConsumer<? super A> consumer)
                                                       throws ReflectionException
        Applies the given CheckedBiConsumer to this object and all instances of the given annotation present on this object.
        Type Parameters:
        A - the annotation type parameter
        Parameters:
        annotationClass - the annotation class
        consumer - the consumer to apply
        Returns:
        This object
        Throws:
        ReflectionException - Something went wrong during reflection