Bonjour,
est-ce possible de paramétrer le type d'un objet à partir de la valeur d'un String ? Je m'explique :
String type = "Valeur";
Valeur a = new Valeur();
Evidemment la classe Valeur aura été définie au préalable
Merci d'avance !!
Bonjour,
est-ce possible de paramétrer le type d'un objet à partir de la valeur d'un String ? Je m'explique :
String type = "Valeur";
Valeur a = new Valeur();
Evidemment la classe Valeur aura été définie au préalable
Merci d'avance !!
Class c = Class.forName(...) // Nom complet avec le package
et
c.newInstance() // nécessite un constructeur sans argument, sinon il faut chercher le bon constructeur dans la classe et l'appeler.
En effet ça marche !
Par contre je n'arrive pas à appeler les méthodes de la classe et ça je ne sais pas si c'est possible...
Tu pourrais le faire en utilisant c.getMethod() comme indiqué dans la FAQ sur la reflexivité en Java.
Mais en principe tu devrais pas avoir besoin de ça. Tu devrais plutôt faire un truc genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Class<?> c = Class.forName("ImplementationDeTonInterface"); TonInterface a = (TonInterface)c.newInstance(); a.taMethode();
Le mieux est de faire une Factory :
Car je suppose que tu n'as pas 36 valeurs pour ton String. Sinon, la méthode de Mathieu est pas mal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class ClassFactory{ public Object createInstanceOf(String className){ switch(className){ case 'String': return new String(); default : return null; } } }
Cordialement,
Patrick Kolodziejczyk.
Si une réponse vous a été utile pensez à![]()
Si vous avez eu la réponse à votre question, marquez votre discussion
Pensez aux FAQs et aux tutoriels et cours.
Partager