Java Language Appeler les constructeurs surchargés en utilisant la réflexion


Exemple

Exemple: appel de différents constructeurs en passant des paramètres pertinents

import java.lang.reflect.*;

class NewInstanceWithReflection{
    public NewInstanceWithReflection(){
        System.out.println("Default constructor");
    }
    public NewInstanceWithReflection( String a){
        System.out.println("Constructor :String => "+a);
    }
    public static void main(String args[]) throws Exception {
        
        NewInstanceWithReflection object = (NewInstanceWithReflection)Class.forName("NewInstanceWithReflection").newInstance();
        Constructor constructor = NewInstanceWithReflection.class.getDeclaredConstructor( new Class[] {String.class});
        NewInstanceWithReflection object1 = (NewInstanceWithReflection)constructor.newInstance(new Object[]{"StackOverFlow"});
        
    }
}

sortie:

Default constructor
Constructor :String => StackOverFlow

Explication:

  1. Créer une instance de classe en utilisant Class.forName : elle appelle le constructeur par défaut
  2. Appelez getDeclaredConstructor de la classe en transmettant le type de paramètres en tant que Class array
  3. Après avoir obtenu le constructeur, créez newInstance en transmettant la valeur du paramètre en tant que Object array