Package com.gengoai.reflection
Class RConstructor
- java.lang.Object
-
- com.gengoai.reflection.RExecutable<Constructor<?>,RConstructor>
-
- com.gengoai.reflection.RConstructor
-
- All Implemented Interfaces:
Serializable
public final class RConstructor extends RExecutable<Constructor<?>,RConstructor>
Wraps a Constructor allowing easy access to parameters and the ability to create new instances of an object.- Author:
- David B. Bracewell
- See Also:
- Serialized Form
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description V
allowPrivilegedAccess()
Allow privileged access to the object<T> T
create(Object... args)
Create a new instance of the object calling the constructor that with the given argumentsReflect
createReflective(Object... args)
Create a new instance of the object calling the constructor that with the given arguments and wrapping the constructed object as a Reflect<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.Constructor<?>
getElement()
Gets the AnnotatedElementReflect
getOwner()
Gets theReflect
object from which this executable was created.Type
getType()
Gets the type of the elementboolean
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.V
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
-
create
public <T> T create(Object... args) throws ReflectionException
Create a new instance of the object calling the constructor that with the given arguments- Type Parameters:
T
- the type parameter for the object being created- Parameters:
args
- the constructor arguments- Returns:
- the created object
- Throws:
ReflectionException
- Something went wrong creating the object
-
createReflective
public Reflect createReflective(Object... args) throws ReflectionException
Create a new instance of the object calling the constructor that with the given arguments and wrapping the constructed object as a Reflect- Parameters:
args
- the constructor arguments- Returns:
- the created object wrapped as a Reflect
- Throws:
ReflectionException
- Something went wrong creating the object
-
getElement
public Constructor<?> getElement()
Gets the AnnotatedElement- Returns:
- the AnnotatedElement object
-
getType
public Type getType()
Gets the type of the element- Returns:
- the type of the element
-
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
-
-