Package com.gengoai.reflection
Class RMethod
- java.lang.Object
-
- com.gengoai.reflection.RExecutable<Method,RMethod>
-
- com.gengoai.reflection.RMethod
-
- All Implemented Interfaces:
Serializable
public class RMethod extends RExecutable<Method,RMethod>
Wraps a Method allowing easy access to parameters and the ability to invoke the method.- Author:
- David B. Bracewell
- See Also:
- Serialized Form
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description V
allowPrivilegedAccess()
Allow privileged access to the object<A extends Annotation>
AgetAnnotation(@NonNull Class<A> annotationClass, boolean onlyDirect)
Gets the annotation of the given class on this object.<A extends Annotation>
AgetAnnotation(Class<A> annotationClass)
Gets the annotation of the given class present on this object.Annotation[]
getAnnotations()
Gets all annotations present on this object.Annotation[]
getAnnotations(boolean onlyDirect)
Gets all annotations on this object.<A extends Annotation>
A[]getAnnotations(@NonNull Class<A> annotationClass)
Gets all associated annotations of given type on this object.<A extends Annotation>
A[]getAnnotations(@NonNull Class<A> annotationClass, boolean onlyDirect)
Gets all annotations on this object.Method
getElement()
Gets the AnnotatedElementReflect
getOwner()
Gets theReflect
object from which this executable was created.Type
getType()
Gets the type of the element<T> T
invoke(Object... args)
Invokes this method with the given arguments.Reflect
invokeReflective(Object... args)
Invokes this method with the given arguments.boolean
isAnnotationDeclared(@NonNull Class<? extends Annotation>... annotationClasses)
Determines if any of the given annotations are declared on this objectboolean
isAnnotationPresent(@NonNull Class<? extends Annotation>... annotationClasses)
Determines if any of the given annotations are present on this objectboolean
isPrivileged()
is privileged access allowed on this object?<O> O
process(@NonNull CheckedFunction<T,O> function)
Applies the givenCheckedFunction
to the object.<A extends Annotation,O>
OprocessAnnotation(@NonNull Class<A> annotationClass, @NonNull CheckedFunction<? super A,? extends O> function)
Applies the givenCheckedBiFunction
to this object with the given annotation if it is present on the object.<A extends Annotation,O>
List<O>processAnnotations(@NonNull Class<A> annotationClass, @NonNull CheckedFunction<? super A,? extends O> function)
Applies the givenCheckedBiFunction
to this object and all instances of the given annotation present on the object.static RMethod
reflectOn(Object object, @NonNull Method method)
Wraps a method in the RMethod class with the given owning beanV
setIsPrivileged(boolean allowPrivilegedAccess)
Sets whether or not privileged access is allowed on this objectString
toString()
void
with(@NonNull CheckedConsumer<T> consumer)
Applies the givenCheckedConsumer
to the object.<A extends Annotation>
VwithAnnotation(@NonNull Class<A> annotationClass, @NonNull CheckedConsumer<? super A> consumer)
Applies the givenCheckedBiConsumer
to this object with the given annotation if it is present on the object.<A extends Annotation>
VwithAnnotations(@NonNull Class<A> annotationClass, @NonNull CheckedConsumer<? super A> consumer)
Applies the givenCheckedBiConsumer
to this object and all instances of the given annotation present on this object.-
Methods inherited from class com.gengoai.reflection.RExecutable
convertParameters, getDeclaringClass, getModifiers, getName, getParameter, getParameterCount, getParameters, isVarArgs, parameterTypesCompatible
-
-
-
-
Method Detail
-
reflectOn
public static RMethod reflectOn(Object object, @NonNull @NonNull Method method)
Wraps a method in the RMethod class with the given owning bean- Parameters:
object
- The object to use when invoking the method.method
- The method to call- Returns:
- The RMethod
-
getElement
public Method getElement()
Gets the AnnotatedElement- Returns:
- the AnnotatedElement object
-
getType
public Type getType()
Gets the type of the element- Returns:
- the type of the element
-
invoke
public <T> T invoke(Object... args) throws ReflectionException
Invokes this method with the given arguments.- Parameters:
args
- The arguments to the method- Returns:
- The return value of the method call
- Throws:
ReflectionException
- Something went wrong invoking the method
-
invokeReflective
public Reflect invokeReflective(Object... args) throws ReflectionException
Invokes this method with the given arguments.- Parameters:
args
- The arguments to the method- Returns:
- A Reflect object representing the results
- Throws:
ReflectionException
- Something went wrong invoking the method
-
toString
public String toString()
-
allowPrivilegedAccess
public final V allowPrivilegedAccess()
Allow privileged access to the object- Returns:
- this Object
-
getOwner
public final Reflect getOwner()
Gets theReflect
object from which this executable was created.- Returns:
- the
Reflect
object from which this executable was created.
-
isPrivileged
public final boolean isPrivileged()
is privileged access allowed on this object?- Returns:
- True - privileged access is allowed, False - no privileged access is allowed
-
process
public final <O> O process(@NonNull @NonNull CheckedFunction<T,O> function) throws ReflectionException
Applies the givenCheckedFunction
to the object. This method takes care of accessibility concerns.- Type Parameters:
O
- the return type parameter- Parameters:
function
- the function to apply- Returns:
- the return value of the function
- Throws:
ReflectionException
- Something went wrong during reflection
-
setIsPrivileged
public final V setIsPrivileged(boolean allowPrivilegedAccess)
Sets whether or not privileged access is allowed on this object- Parameters:
allowPrivilegedAccess
- True - privileged access is allowed, False - no privileged access is allowed- Returns:
- this object
-
with
public final void with(@NonNull @NonNull CheckedConsumer<T> consumer) throws ReflectionException
Applies the givenCheckedConsumer
to the object. This method takes care of accessibility concerns.- Parameters:
consumer
- the consumer to apply- Throws:
ReflectionException
- Something went wrong during reflection
-
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. WhenonlyDirect
is true it will only return annotations directly present viagetDeclaredAnnotation
otherwise will return any instance present viagetAnnotation
.- Type Parameters:
A
- the annotation type parameter- Parameters:
annotationClass
- the annotation classonlyDirect
- 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. WhenonlyDirect
is true it will only return annotations directly present viagetDeclaredAnnotations
otherwise will return any instance present viagetAnnotations
.- 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. WhenonlyDirect
is true it will only return annotations directly present viagetDeclaredAnnotationsByType
otherwise will return any instance present viagetAnnotationsByType
.- Type Parameters:
A
- the annotation type parameter- Parameters:
annotationClass
- the annotation classonlyDirect
- 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 givenCheckedBiFunction
to this object with the given annotation if it is present on the object.- Type Parameters:
A
- the annotation type parameterO
- the return type parameter- Parameters:
annotationClass
- the annotation classfunction
- 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 givenCheckedBiFunction
to this object and all instances of the given annotation present on the object.- Type Parameters:
A
- the annotation type parameterO
- the return type parameter- Parameters:
annotationClass
- the annotation classfunction
- 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 givenCheckedBiConsumer
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 classconsumer
- 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 givenCheckedBiConsumer
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 classconsumer
- the consumer to apply- Returns:
- This object
- Throws:
ReflectionException
- Something went wrong during reflection
-
-