Un objet Constructor représente un constructeur réflêchi.

Les méthodes de cette classe sont utilisées pour obtenir le type de chaque paramètre formel et exception contrôlée du constructeur sous-jacent. En outre, la méthode newInstance() de la classe Constructor permet de créer et initialiser une nouvelle instance de la classe déclarée par le constructeur à condition que la classe soit instanciable.

Class classe = Class.forName("java.lang.StringBuffer");
Constructor[] constructeurs = classe.getDeclaredConstructors();

L'instanciation d'une classe par l'intermédiaire d'un constructeur nécessite de renseigner les valeurs de paramètres au sein de la méthode newInstance(params). Les valeurs doivent correspondre aux types de paramètres énoncés lors de l'obtention du constructeur. Subséquemment, le constructeur peut être instancier par l'objet Constructor courant.

Class classe = Class.forName("java.util.Hashtable");
Class[] types = {Integer.TYPE};
Constructor constructeur = 
                                       classe.getConstructor("Hashtable", types);
Object[] params = {new Integer(20)};
Object obj = constructeur.newInstance(params);

par ailleurs, il est possible d'obtenir la classe de déclaration du constructeur par l'intermédiaire de la méthode getDeclaringClass(). Le nom ou à la représentation textuelle de l'objet Constructor sont accessibles respectivement par le truchement de la méthode getName() ou toString().

Class classe = Class.forName("java.util.Vector");
Class[] types = {Integer.TYPE, Integer.TYPE};
Constructor constructeur = classe.getConstructor(types);
String nomClasse = constructeur.getName();
String nomClasseDeclaration = 
                                       constructeur.getDeclaringClass().getName();
String représentationMethode = constructeur.toString();

La classe Constructor dispose également de plusieurs méthodes destinées à récupérer les types de paramètres formels (getParameterTypes()) et d'exceptions susceptibles d'être lancées (getExceptionTypes()), du constructeur sous-jacent représenté par l'objet Constructor.

Exemple [voir]
import java.lang.reflect.Constructor;

public class Introspection {
  public static void main(String[] args) {
    try {
      Class classe = Class.forName("java.util.Vector");
      Constructor[] constructeurs = classe.getConstructors();
      System.out.println("Les constructeurs publics de la classe " 
         + classe.getName() + " et celles héritées des superclasses et interfaces.");
      System.out.println("Num :\tConstructeur\t"
                                                + "Types des Parametres`\tTypes des Exceptions");
      for(int i = 0; i < constructeurs.length; i++){
        System.out.print(i + " :\t" + constructeurs[i].getName() + "\t");
        Class[] tabTypesParams = constructeurs[i].getParameterTypes();
        for(int j = 0; j < tabTypesParams.length; j++){
          System.out.print(j > 0 ? ", " : "\t");
          System.out.print(tabTypesParams[j].getName());
        }
        System.out.print("\t");
        Class[] tabTypesExceptions = constructeurs[i].getExceptionTypes();
        for(int j = 0; j < tabTypesExceptions.length; j++){
          System.out.print(j > 0 ? ", " : "\t");
          System.out.print(tabTypesExceptions[j].getName());
        }
        System.out.println("");
      }
    }
    catch (ClassNotFoundException e) {
      e.printStackTrace();
      System.out.println("La classe n'a pu être déterminée " 
                                                        + "dans la méthode main()!");
    }
  }
}