|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.apache.commons.beanutils.ConstructorUtils
Utility reflection methods focussed on constructors, modelled 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 privilages.
If this call fails then a warning will be logged and the method may fail.
Field Summary | |
private static java.lang.Class[] |
emptyClassArray
An empty class array |
private static java.lang.Object[] |
emptyObjectArray
An empty object array |
Constructor Summary | |
ConstructorUtils()
|
Method Summary | |
static java.lang.reflect.Constructor |
getAccessibleConstructor(java.lang.Class klass,
java.lang.Class parameterType)
Returns a constructor with single argument. |
static java.lang.reflect.Constructor |
getAccessibleConstructor(java.lang.Class klass,
java.lang.Class[] parameterTypes)
Returns a constructor given a class and signature. |
static java.lang.reflect.Constructor |
getAccessibleConstructor(java.lang.reflect.Constructor ctor)
Returns accessible version of the given constructor. |
private static java.lang.reflect.Constructor |
getMatchingAccessibleConstructor(java.lang.Class clazz,
java.lang.Class[] parameterTypes)
Find an accessible constructor with compatible parameters. |
static java.lang.Object |
invokeConstructor(java.lang.Class klass,
java.lang.Object arg)
Convenience method returning new instance of klazz using a single argument constructor. |
static java.lang.Object |
invokeConstructor(java.lang.Class klass,
java.lang.Object[] args)
Returns new instance of klazz created using the actual arguments args . |
static java.lang.Object |
invokeConstructor(java.lang.Class klass,
java.lang.Object[] args,
java.lang.Class[] parameterTypes)
Returns new instance of klazz created using constructor
with signature parameterTypes and actual arguments args . |
static java.lang.Object |
invokeExactConstructor(java.lang.Class klass,
java.lang.Object arg)
Convenience method returning new instance of klazz using a single argument constructor. |
static java.lang.Object |
invokeExactConstructor(java.lang.Class klass,
java.lang.Object[] args)
Returns new instance of klazz created using the actual arguments args . |
static java.lang.Object |
invokeExactConstructor(java.lang.Class klass,
java.lang.Object[] args,
java.lang.Class[] parameterTypes)
Returns new instance of klazz created using constructor
with signature parameterTypes and actual arguments
args . |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
private static final java.lang.Class[] emptyClassArray
private static final java.lang.Object[] emptyObjectArray
Constructor Detail |
public ConstructorUtils()
Method Detail |
public static java.lang.Object invokeConstructor(java.lang.Class klass, java.lang.Object arg) throws java.lang.NoSuchMethodException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.InstantiationException
Convenience method returning new instance of klazz
using a single argument constructor.
The formal parameter type is inferred from the actual values of arg
.
See invokeExactConstructor(Class, Object[], Class[])
for more details.
The signatures should be assignment compatible.
klass
- the class to be constructed.arg
- the actual argument
klazz
java.lang.NoSuchMethodException
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.InstantiationException
invokeConstructor(java.lang.Class, java.lang.Object[], java.lang.Class[])
public static java.lang.Object invokeConstructor(java.lang.Class klass, java.lang.Object[] args) throws java.lang.NoSuchMethodException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.InstantiationException
Returns new instance of klazz
created using the actual arguments args
.
The formal parameter types are inferred from the actual values of args
.
See invokeExactConstructor(Class, Object[], Class[])
for more details.
The signatures should be assignment compatible.
klass
- the class to be constructed.args
- actual argument array
klazz
java.lang.NoSuchMethodException
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.InstantiationException
invokeConstructor(java.lang.Class, java.lang.Object[], java.lang.Class[])
public static java.lang.Object invokeConstructor(java.lang.Class klass, java.lang.Object[] args, java.lang.Class[] parameterTypes) throws java.lang.NoSuchMethodException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.InstantiationException
Returns new instance of klazz
created using constructor
with signature parameterTypes
and actual arguments args
.
The signatures should be assignment compatible.
klass
- the class to be constructed.args
- actual argument arrayparameterTypes
- parameter types array
klazz
java.lang.NoSuchMethodException
- if matching constructor cannot be found
java.lang.IllegalAccessException
- thrown on the constructor's invocation
java.lang.reflect.InvocationTargetException
- thrown on the constructor's invocation
java.lang.InstantiationException
- thrown on the constructor's invocationConstructor.newInstance(java.lang.Object[])
public static java.lang.Object invokeExactConstructor(java.lang.Class klass, java.lang.Object arg) throws java.lang.NoSuchMethodException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.InstantiationException
Convenience method returning new instance of klazz
using a single argument constructor.
The formal parameter type is inferred from the actual values of arg
.
See invokeExactConstructor(Class, Object[], Class[])
for more details.
The signatures should match exactly.
klass
- the class to be constructed.arg
- the actual argument
klazz
java.lang.NoSuchMethodException
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.InstantiationException
invokeExactConstructor(java.lang.Class, java.lang.Object[], java.lang.Class[])
public static java.lang.Object invokeExactConstructor(java.lang.Class klass, java.lang.Object[] args) throws java.lang.NoSuchMethodException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.InstantiationException
Returns new instance of klazz
created using the actual arguments args
.
The formal parameter types are inferred from the actual values of args
.
See invokeExactConstructor(Class, Object[], Class[])
for more details.
The signatures should match exactly.
klass
- the class to be constructed.args
- actual argument array
klazz
java.lang.NoSuchMethodException
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.InstantiationException
invokeExactConstructor(java.lang.Class, java.lang.Object[], java.lang.Class[])
public static java.lang.Object invokeExactConstructor(java.lang.Class klass, java.lang.Object[] args, java.lang.Class[] parameterTypes) throws java.lang.NoSuchMethodException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.InstantiationException
Returns new instance of klazz
created using constructor
with signature parameterTypes
and actual arguments
args
.
The signatures should match exactly.
klass
- the class to be constructed.args
- actual argument arrayparameterTypes
- parameter types array
klazz
java.lang.NoSuchMethodException
- if matching constructor cannot be found
java.lang.IllegalAccessException
- thrown on the constructor's invocation
java.lang.reflect.InvocationTargetException
- thrown on the constructor's invocation
java.lang.InstantiationException
- thrown on the constructor's invocationConstructor.newInstance(java.lang.Object[])
public static java.lang.reflect.Constructor getAccessibleConstructor(java.lang.Class klass, java.lang.Class parameterType)
klass
- the class to be constructed
Class.getConstructor(java.lang.Class[])
,
getAccessibleConstructor(java.lang.reflect.Constructor)
public static java.lang.reflect.Constructor getAccessibleConstructor(java.lang.Class klass, java.lang.Class[] parameterTypes)
klass
- the class to be constructedparameterTypes
- the parameter array
Class.getConstructor(java.lang.Class[])
,
getAccessibleConstructor(java.lang.reflect.Constructor)
public static java.lang.reflect.Constructor getAccessibleConstructor(java.lang.reflect.Constructor ctor)
ctor
- prototype constructor object.
null
if accessible constructor can not be found.SecurityManager
private static java.lang.reflect.Constructor getMatchingAccessibleConstructor(java.lang.Class clazz, java.lang.Class[] parameterTypes)
Find an accessible constructor with compatible parameters. Compatible parameters mean that every method parameter is assignable from the given parameters. In other words, it finds constructor that will take the parameters given.
First it checks if there is constructor matching the exact signature. If no such, all the constructors of the class are tested if their signatures are assignment compatible with the parameter types. The first matching constructor is returned.
clazz
- find constructor for this classparameterTypes
- find method with compatible parameters
null
.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |