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