java.lang.reflect

Class Constructor<T>

Implemented Interfaces:
AnnotatedElement, GenericDeclaration, Member

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

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, java.lang.Class.getConstructor(Class[]), java.lang.Class.getDeclaredConstructor(Class[]), Class.getConstructors(), Class.getDeclaredConstructors()

Fields inherited from interface java.lang.reflect.Member

DECLARED, PUBLIC

Method Summary

boolean
equals(Object o)
Compare two objects to see if they are semantically equivalent.
Class
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).
Class[]
getParameterTypes()
Get the parameter list for this constructor, in declaration order.
TypeVariable>[]
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(java.lang.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

extends Annotation> T getAnnotation, getAnnotations, getDeclaredAnnotations, isAccessible, isAnnotationPresent, setAccessible, setAccessible

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Details

equals

public boolean equals(Object o)
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. This ignores different exception clauses, but since you can't create a Method except through the VM, this is just the == relation.
Overrides:
equals in interface Object
Parameters:
o - the object to compare to
Returns:
true if they are equal; false if not.

getDeclaringClass

public Class getDeclaringClass()
Gets the class that declared this constructor.
Specified by:
getDeclaringClass in interface Member
Returns:
the class that declared this member

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

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.
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
Since:
1.5

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

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

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

getTypeParameters

public TypeVariable>[] 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.
Since:
1.5

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 interface Object
Returns:
the hash code for the object

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
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

newInstance

public T newInstance(java.lang.Object... args)
            throws InstantiationException,
                   IllegalAccessException,
                   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

toGenericString

public String toGenericString()

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 interface Object
Returns:
the String representation of the Constructor

java.lang.reflect.Constructor - reflection of Java constructors Copyright (C) 1998, 2001, 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.