|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.commons.lang3.reflect.ConstructorUtils
public class ConstructorUtils
Utility reflection methods focused on constructors, modeled after
MethodUtils
.
There is an issue when invoking public constructors
contained in a default access superclass. Reflection locates these
constructors fine and correctly assigns them as public. However, an
IllegalAccessException
is thrown if the constructors is
invoked.
ConstructorUtils
contains a workaround for this situation. It
will attempt to call setAccessible
on this constructor. If this
call succeeds, then the method can be invoked as normal. This call will only
succeed when the application has sufficient security privileges. If this call
fails then a warning will be logged and the method may fail.
Constructor Summary | |
---|---|
ConstructorUtils()
ConstructorUtils instances should NOT be constructed in standard programming. |
Method Summary | ||
---|---|---|
static
|
getAccessibleConstructor(Class<T> cls,
Class<?>... parameterTypes)
Finds a constructor given a class and signature, checking accessibility. |
|
static
|
getAccessibleConstructor(Constructor<T> ctor)
Checks if the specified constructor is accessible. |
|
static
|
getMatchingAccessibleConstructor(Class<T> cls,
Class<?>... parameterTypes)
Finds an accessible constructor with compatible parameters. |
|
static
|
invokeConstructor(Class<T> cls,
Object... args)
Returns a new instance of the specified class inferring the right constructor from the types of the arguments. |
|
static
|
invokeConstructor(Class<T> cls,
Object[] args,
Class<?>[] parameterTypes)
Returns a new instance of the specified class choosing the right constructor from the list of parameter types. |
|
static
|
invokeExactConstructor(Class<T> cls,
Object... args)
Returns a new instance of the specified class inferring the right constructor from the types of the arguments. |
|
static
|
invokeExactConstructor(Class<T> cls,
Object[] args,
Class<?>[] parameterTypes)
Returns a new instance of the specified class choosing the right constructor from the list of parameter types. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public ConstructorUtils()
ConstructorUtils instances should NOT be constructed in standard
programming. Instead, the class should be used as
ConstructorUtils.invokeConstructor(cls, args)
.
This constructor is public to permit tools that require a JavaBean instance to operate.
Method Detail |
---|
public static <T> T invokeConstructor(Class<T> cls, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException
Returns a new instance of the specified class inferring the right constructor from the types of the arguments.
This locates and calls a constructor. The constructor signature must match the argument types by assignment compatibility.
T
- the type to be constructedcls
- the class to be constructed, not nullargs
- the array of arguments, null treated as empty
cls
, not null
NoSuchMethodException
- if a matching constructor cannot be found
IllegalAccessException
- if invocation is not permitted by security
InvocationTargetException
- if an error occurs on invocation
InstantiationException
- if an error occurs on instantiationinvokeConstructor(java.lang.Class, java.lang.Object[], java.lang.Class[])
public static <T> T invokeConstructor(Class<T> cls, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException
Returns a new instance of the specified class choosing the right constructor from the list of parameter types.
This locates and calls a constructor. The constructor signature must match the parameter types by assignment compatibility.
T
- the type to be constructedcls
- the class to be constructed, not nullargs
- the array of arguments, null treated as emptyparameterTypes
- the array of parameter types, null treated as empty
cls
, not null
NoSuchMethodException
- if a matching constructor cannot be found
IllegalAccessException
- if invocation is not permitted by security
InvocationTargetException
- if an error occurs on invocation
InstantiationException
- if an error occurs on instantiationConstructor.newInstance(java.lang.Object...)
public static <T> T invokeExactConstructor(Class<T> cls, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException
Returns a new instance of the specified class inferring the right constructor from the types of the arguments.
This locates and calls a constructor. The constructor signature must match the argument types exactly.
T
- the type to be constructedcls
- the class to be constructed, not nullargs
- the array of arguments, null treated as empty
cls
, not null
NoSuchMethodException
- if a matching constructor cannot be found
IllegalAccessException
- if invocation is not permitted by security
InvocationTargetException
- if an error occurs on invocation
InstantiationException
- if an error occurs on instantiationinvokeExactConstructor(java.lang.Class, java.lang.Object[], java.lang.Class[])
public static <T> T invokeExactConstructor(Class<T> cls, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException
Returns a new instance of the specified class choosing the right constructor from the list of parameter types.
This locates and calls a constructor. The constructor signature must match the parameter types exactly.
T
- the type to be constructedcls
- the class to be constructed, not nullargs
- the array of arguments, null treated as emptyparameterTypes
- the array of parameter types, null treated as empty
cls
, not null
NoSuchMethodException
- if a matching constructor cannot be found
IllegalAccessException
- if invocation is not permitted by security
InvocationTargetException
- if an error occurs on invocation
InstantiationException
- if an error occurs on instantiationConstructor.newInstance(java.lang.Object...)
public static <T> Constructor<T> getAccessibleConstructor(Class<T> cls, Class<?>... parameterTypes)
Finds a constructor given a class and signature, checking accessibility.
This finds the constructor and ensures that it is accessible. The constructor signature must match the parameter types exactly.
T
- the constructor typecls
- the class to find a constructor for, not nullparameterTypes
- the array of parameter types, null treated as empty
Class.getConstructor(java.lang.Class>...)
,
getAccessibleConstructor(java.lang.reflect.Constructor)
public static <T> Constructor<T> getAccessibleConstructor(Constructor<T> ctor)
Checks if the specified constructor is accessible.
This simply ensures that the constructor is accessible.
T
- the constructor typector
- the prototype constructor object, not null
SecurityManager
public static <T> Constructor<T> getMatchingAccessibleConstructor(Class<T> cls, Class<?>... parameterTypes)
Finds an accessible constructor with compatible parameters.
This checks all the constructor and finds one with compatible parameters This requires that every parameter is assignable from the given parameter types. This is a more flexible search than the normal exact matching algorithm.
First it checks if there is a constructor matching the exact signature. If not then all the constructors of the class are checked to see if their signatures are assignment compatible with the parameter types. The first assignment compatible matching constructor is returned.
T
- the constructor typecls
- the class to find a constructor for, not nullparameterTypes
- find method with compatible parameters
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |