org.apache.commons.beanutils

Class ConstructorUtils

public class ConstructorUtils extends Object

Utility reflection methods focussed on constructors, modelled after MethodUtils.

Known Limitations

Accessing Public Constructors In A Default Access Superclass

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.

Version: $Revision: 555824 $ $Date: 2007-07-13 01:27:15 +0100 (Fri, 13 Jul 2007) $

Author: Craig R. McClanahan Ralph Schaer Chris Audley Rey Francois Gregor Rayman Jan Sorensen Robert Burrell Donkin Rodney Waldhoff

Method Summary
static ConstructorgetAccessibleConstructor(Class klass, Class parameterType)
Returns a constructor with single argument.
static ConstructorgetAccessibleConstructor(Class klass, Class[] parameterTypes)
Returns a constructor given a class and signature.
static ConstructorgetAccessibleConstructor(Constructor ctor)
Returns accessible version of the given constructor.
static ObjectinvokeConstructor(Class klass, Object arg)

Convenience method returning new instance of klazz using a single argument constructor.

static ObjectinvokeConstructor(Class klass, Object[] args)

Returns new instance of klazz created using the actual arguments args.

static ObjectinvokeConstructor(Class klass, Object[] args, Class[] parameterTypes)

Returns new instance of klazz created using constructor with signature parameterTypes and actual arguments args.

The signatures should be assignment compatible.

static ObjectinvokeExactConstructor(Class klass, Object arg)

Convenience method returning new instance of klazz using a single argument constructor.

static ObjectinvokeExactConstructor(Class klass, Object[] args)

Returns new instance of klazz created using the actual arguments args.

static ObjectinvokeExactConstructor(Class klass, Object[] args, Class[] parameterTypes)

Returns new instance of klazz created using constructor with signature parameterTypes and actual arguments args.

The signatures should match exactly.

Method Detail

getAccessibleConstructor

public static Constructor getAccessibleConstructor(Class klass, Class parameterType)
Returns a constructor with single argument.

Parameters: klass the class to be constructed parameterType The constructor parameter type

Returns: null if matching accessible constructor can not be found.

See Also: Class#getConstructor getAccessibleConstructor

getAccessibleConstructor

public static Constructor getAccessibleConstructor(Class klass, Class[] parameterTypes)
Returns a constructor given a class and signature.

Parameters: klass the class to be constructed parameterTypes the parameter array

Returns: null if matching accessible constructor can not be found

See Also: Class#getConstructor getAccessibleConstructor

getAccessibleConstructor

public static Constructor getAccessibleConstructor(Constructor ctor)
Returns accessible version of the given constructor.

Parameters: ctor prototype constructor object.

Returns: null if accessible constructor can not be found.

See Also: java.lang.SecurityManager

invokeConstructor

public static Object invokeConstructor(Class klass, Object arg)

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 (Class, Object[], Class[]) for more details.

The signatures should be assignment compatible.

Parameters: klass the class to be constructed. arg the actual argument

Returns: new instance of klazz

Throws: NoSuchMethodException If the constructor cannot be found IllegalAccessException If an error occurs accessing the constructor InvocationTargetException If an error occurs invoking the constructor InstantiationException If an error occurs instantiating the class

See Also: (java.lang.Class, java.lang.Object[], java.lang.Class[])

invokeConstructor

public static Object invokeConstructor(Class klass, Object[] args)

Returns new instance of klazz created using the actual arguments args. The formal parameter types are inferred from the actual values of args. See (Class, Object[], Class[]) for more details.

The signatures should be assignment compatible.

Parameters: klass the class to be constructed. args actual argument array

Returns: new instance of klazz

Throws: NoSuchMethodException If the constructor cannot be found IllegalAccessException If an error occurs accessing the constructor InvocationTargetException If an error occurs invoking the constructor InstantiationException If an error occurs instantiating the class

See Also: (java.lang.Class, java.lang.Object[], java.lang.Class[])

invokeConstructor

public static Object invokeConstructor(Class klass, Object[] args, Class[] parameterTypes)

Returns new instance of klazz created using constructor with signature parameterTypes and actual arguments args.

The signatures should be assignment compatible.

Parameters: klass the class to be constructed. args actual argument array parameterTypes parameter types array

Returns: new instance of klazz

Throws: NoSuchMethodException if matching constructor cannot be found IllegalAccessException thrown on the constructor's invocation InvocationTargetException thrown on the constructor's invocation InstantiationException thrown on the constructor's invocation

See Also: Constructor#newInstance

invokeExactConstructor

public static Object invokeExactConstructor(Class klass, Object arg)

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 (Class, Object[], Class[]) for more details.

The signatures should match exactly.

Parameters: klass the class to be constructed. arg the actual argument

Returns: new instance of klazz

Throws: NoSuchMethodException If the constructor cannot be found IllegalAccessException If an error occurs accessing the constructor InvocationTargetException If an error occurs invoking the constructor InstantiationException If an error occurs instantiating the class

See Also: (java.lang.Class, java.lang.Object[], java.lang.Class[])

invokeExactConstructor

public static Object invokeExactConstructor(Class klass, Object[] args)

Returns new instance of klazz created using the actual arguments args. The formal parameter types are inferred from the actual values of args. See (Class, Object[], Class[]) for more details.

The signatures should match exactly.

Parameters: klass the class to be constructed. args actual argument array

Returns: new instance of klazz

Throws: NoSuchMethodException If the constructor cannot be found IllegalAccessException If an error occurs accessing the constructor InvocationTargetException If an error occurs invoking the constructor InstantiationException If an error occurs instantiating the class

See Also: (java.lang.Class, java.lang.Object[], java.lang.Class[])

invokeExactConstructor

public static Object invokeExactConstructor(Class klass, Object[] args, Class[] parameterTypes)

Returns new instance of klazz created using constructor with signature parameterTypes and actual arguments args.

The signatures should match exactly.

Parameters: klass the class to be constructed. args actual argument array parameterTypes parameter types array

Returns: new instance of klazz

Throws: NoSuchMethodException if matching constructor cannot be found IllegalAccessException thrown on the constructor's invocation InvocationTargetException thrown on the constructor's invocation InstantiationException thrown on the constructor's invocation

See Also: Constructor#newInstance

Copyright © 2000-2010 Apache Software Foundation. All Rights Reserved.