Instancier une classe a partir de son nom

Contenu du snippet

public class InstanceByName {
    public static void main(String[] args) {
        //recuperation de l'instance
        //attention si la classe se trouve dans un package ne pas oublier
        //de mettre le chemin de la classe :
        //soit le package toto.tata
        //alors pour trouver la classe on doit mettre
        //getInstance("toto.tata.ClassInstance");
        ClassInstance ci = (ClassInstance)getInstance("ClassInstance");
        //petite verification
        System.out.println(ci);//ici on affiche la methode toString
    }
    
    public static Object getInstance(String name){
        try {
            return Class.forName("ClassInstance").newInstance();
        } catch (InstantiationException e) {
            System.err.println("Impossible d'instancer la classe");
        } catch (IllegalAccessException e) {
            System.err.println("Impossible d'acceder au construteur (non visible)");
        } catch (ClassNotFoundException e) {
            System.err.println("Impossible de trouver la classe");
        }
        return null;
    }
}
//la classe a instancier
class ClassInstance{
    public ClassInstance(){
        System.out.println("new instrance");
    }
    
    public String toString(){
        return "ClassInstance@" + hashCode();//pour afficher quelque chose
    }
}


Compatibilité : Java

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.