java.lang.reflect
Class Constructor<T>

java.lang.Object
  extended by java.lang.reflect.AccessibleObject
      extended by java.lang.reflect.Constructor<T>
All Implemented Interfaces:
AnnotatedElement, GenericDeclaration, Member

public final class Constructor<T>
extends AccessibleObject
implements Member, GenericDeclaration

The Constructor class represents a constructor of a class. It also allows dynamic creation of an object, via reflection. Invocation on Constructor objects knows how to do widening conversions, but throws IllegalArgumentException if a narrowing conversion would be necessary. You can query for information on this Constructor regardless of location, but construction access may be limited by Java language access controls. If you can't do it in the compiler, you can't normally do it here either.

Note: This class returns and accepts types as Classes, even primitive types; there are Class types defined that represent each different primitive type. They are java.lang.Boolean.TYPE, java.lang.Byte.TYPE,, also available as boolean.class, byte.class, etc. These are not to be confused with the classes java.lang.Boolean, java.lang.Byte, etc., which are real classes.

Also note that this is not a serializable class. It is entirely feasible to make it serializable using the Externalizable interface, but this is on Sun, not me.

Since:
1.1
See Also:
Member, Class, Class.getConstructor(Class[]), Class.getDeclaredConstructor(Class[]), Class.getConstructors(), Class.getDeclaredConstructors()

Field Summary
 
Fields inherited from interface java.lang.reflect.Member
DECLARED, PUBLIC
 
Method Summary
 boolean equals(Object obj)
          Compare two objects to see if they are semantically equivalent.
<T extends Annotation>
T
getAnnotation(Class<T> annoClass)
          Returns the element's annotation for the specified annotation type, or null if no such annotation exists.
 Annotation[] getDeclaredAnnotations()
          Returns all annotations directly defined by the element.
 Class<T> getDeclaringClass()
          Gets the class that declared this constructor.
 Class<?>[] getExceptionTypes()
          Get the exception types this constructor says it throws, in no particular order.
 Type[] getGenericExceptionTypes()
          Returns an array of Type objects that represents the exception types declared by this constructor, in declaration order.
 Type[] getGenericParameterTypes()
          Returns an array of Type objects that represents the parameter list for this constructor, in declaration order.
 int getModifiers()
          Gets the modifiers this constructor uses.
 String getName()
          Gets the name of this constructor (the non-qualified name of the class it was declared in).
 Annotation[][] getParameterAnnotations()
           
 Class<?>[] getParameterTypes()
          Get the parameter list for this constructor, in declaration order.
 TypeVariable<Constructor<T>>[] getTypeParameters()
          Returns an array of TypeVariable objects that represents the type variables declared by this constructor, in declaration order.
 int hashCode()
          Get the hash code for the Constructor.
 boolean isSynthetic()
          Return true if this constructor is synthetic, false otherwise.
 boolean isVarArgs()
          Return true if this is a varargs constructor, that is if the constructor takes a variable number of arguments.
 T newInstance(Object... args)
          Create a new instance by invoking the constructor.
 String toGenericString()
           
 String toString()
          Get a String representation of the Constructor.
 
Methods inherited from class java.lang.reflect.AccessibleObject
getAnnotations, isAccessible, isAnnotationPresent, setAccessible, setAccessible
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Method Detail

getDeclaringClass

public Class<T> getDeclaringClass()
Gets the class that declared this constructor.

Specified by:
getDeclaringClass in interface Member
Returns:
the class that declared this member

getName

public String getName()
Gets the name of this constructor (the non-qualified name of the class it was declared in).

Specified by:
getName in interface Member
Returns:
the name of this constructor

getModifiers

public int getModifiers()
Gets the modifiers this constructor uses. Use the Modifier class to interpret the values. A constructor can only have a subset of the following modifiers: public, private, protected.

Specified by:
getModifiers in interface Member
Returns:
an integer representing the modifiers to this Member
See Also:
Modifier

isSynthetic

public boolean isSynthetic()
Return true if this constructor is synthetic, false otherwise. A synthetic member is one which is created by the compiler, and which does not appear in the user's source code.

Specified by:
isSynthetic in interface Member
Returns:
true if the member is synthetic
Since:
1.5

isVarArgs

public boolean isVarArgs()
Return true if this is a varargs constructor, that is if the constructor takes a variable number of arguments.

Since:
1.5

getParameterTypes

public Class<?>[] getParameterTypes()
Get the parameter list for this constructor, in declaration order. If the constructor takes no parameters, returns a 0-length array (not null).

Returns:
a list of the types of the constructor's parameters

getExceptionTypes

public Class<?>[] getExceptionTypes()
Get the exception types this constructor says it throws, in no particular order. If the constructor has no throws clause, returns a 0-length array (not null).

Returns:
a list of the types in the constructor's throws clause

equals

public boolean equals(Object obj)
Compare two objects to see if they are semantically equivalent. Two Constructors are semantically equivalent if they have the same declaring class and the same parameter list.

Overrides:
equals in class Object
Parameters:
o - the object to compare to
Returns:
true if they are equal; false if not.
See Also:
Object.hashCode()

hashCode

public int hashCode()
Get the hash code for the Constructor. The Constructor hash code is the hash code of the declaring class's name.

Overrides:
hashCode in class Object
Returns:
the hash code for the object
See Also:
Object.equals(Object), System.identityHashCode(Object)

toString

public String toString()
Get a String representation of the Constructor. A Constructor's String representation is "<modifier> <classname>(<paramtypes>) throws <exceptions>", where everything after ')' is omitted if there are no exceptions.
Example: public java.io.FileInputStream(java.lang.Runnable) throws java.io.FileNotFoundException

Overrides:
toString in class Object
Returns:
the String representation of the Constructor
See Also:
Object.getClass(), Object.hashCode(), Class.getName(), Integer.toHexString(int)

toGenericString

public String toGenericString()

newInstance

public T newInstance(Object... args)
              throws InstantiationException,
                     IllegalAccessException,
                     IllegalArgumentException,
                     InvocationTargetException
Create a new instance by invoking the constructor. Arguments are automatically unwrapped and widened, if needed.

If this class is abstract, you will get an InstantiationException. If the constructor takes 0 arguments, you may use null or a 0-length array for args.

If this Constructor enforces access control, your runtime context is evaluated, and you may have an IllegalAccessException if you could not create this object in similar compiled code. If the class is uninitialized, you trigger class initialization, which may end in a ExceptionInInitializerError.

Then, the constructor is invoked. If it completes normally, the return value will be the new object. If it completes abruptly, the exception is wrapped in an InvocationTargetException.

Parameters:
args - the arguments to the constructor
Returns:
the newly created object
Throws:
IllegalAccessException - if the constructor could not normally be called by the Java code (i.e. it is not public)
IllegalArgumentException - if the number of arguments is incorrect; or if the arguments types are wrong even with a widening conversion
InstantiationException - if the class is abstract
InvocationTargetException - if the constructor throws an exception
ExceptionInInitializerError - if construction triggered class initialization, which then failed

getTypeParameters

public TypeVariable<Constructor<T>>[] getTypeParameters()
Returns an array of TypeVariable objects that represents the type variables declared by this constructor, in declaration order. An array of size zero is returned if this constructor has no type variables.

Specified by:
getTypeParameters in interface GenericDeclaration
Returns:
the type variables associated with this constructor.
Throws:
GenericSignatureFormatError - if the generic signature does not conform to the format specified in the Virtual Machine specification, version 3.
Since:
1.5

getGenericExceptionTypes

public Type[] getGenericExceptionTypes()
Returns an array of Type objects that represents the exception types declared by this constructor, in declaration order. An array of size zero is returned if this constructor declares no exceptions.

Returns:
the exception types declared by this constructor.
Throws:
GenericSignatureFormatError - if the generic signature does not conform to the format specified in the Virtual Machine specification, version 3.
Since:
1.5

getGenericParameterTypes

public Type[] getGenericParameterTypes()
Returns an array of Type objects that represents the parameter list for this constructor, in declaration order. An array of size zero is returned if this constructor takes no parameters.

Returns:
a list of the types of the constructor's parameters
Throws:
GenericSignatureFormatError - if the generic signature does not conform to the format specified in the Virtual Machine specification, version 3.
Since:
1.5

getAnnotation

public <T extends Annotation> T getAnnotation(Class<T> annoClass)
Description copied from interface: AnnotatedElement
Returns the element's annotation for the specified annotation type, or null if no such annotation exists.

Specified by:
getAnnotation in interface AnnotatedElement
Overrides:
getAnnotation in class AccessibleObject
Parameters:
annoClass - the type of annotation to look for.
Returns:
this element's annotation for the specified type, or null if no such annotation exists.

getDeclaredAnnotations

public Annotation[] getDeclaredAnnotations()
Description copied from interface: AnnotatedElement
Returns all annotations directly defined by the element. If there are no annotations directly associated with the element, then a zero-length array will be returned. The returned array may be modified by the client code, but this will have no effect on the annotation content of this class, and hence no effect on the return value of this method for future callers.

Specified by:
getDeclaredAnnotations in interface AnnotatedElement
Overrides:
getDeclaredAnnotations in class AccessibleObject
Returns:
the annotations directly defined by the element.

getParameterAnnotations

public Annotation[][] getParameterAnnotations()