Bonjour,
J'utilise une méthode pour instancier des objets directement par les classes associés, dont l'extrait est :Jusque là, pas de soucis. Mais l'une de mes classe utilise dans le constructeur des tableaux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public Object constructeur(String classe, Class[] classesParam, Object[] arguments) { Class<C> classe = Class.forName(classe); Constructor<C> constructeur = classe.getConstructor(classesParam); Object résultat = constructeur.newInstance(arguments); } // Appel constructeur("Test",new Class[] {String.class,Object.class},new Object[] {"strParam1",monObjet2}); // La classe Test serait public class Test { public Test(String param1, Object param2){} }J'essai ceci, mais sans résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public class Test { public Test(String[] param1, Object[] param2){} }Mais j'obtiens l'erreur de conversion de Class[] vers Class sur le champ "classString" (alors qu'il l'accepte pour param1).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 String[] param1 = {"A","B"}; Object[] param2 = {MonObjetA,MonObjetB}; Class[] classString = {String.class}; Class[] classObject = {Object.class}; constructeur("Test",new Class[] {classString,classObject},new Object[] {param1,param2});
Comment dois-je paramétrer l'appel ? Ou si je ne peux pas utiliser la même méthode, comment utiliser "classe.getConstructor(classesParam);" (arguments et appels) ?
Merci !
--------------------------------
Bah j'ai trouvé la solution, en cherchant à l'inverse par la méthode getConstructors() de la classe Class :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 String[] param1 = {"A","B"}; Object[] param2 = {MonObjetA,MonObjetB}; Class classString = Class.forName("[Ljava.lang.String;"); Class classObject = Class.forName("[Ljava.lang.Object;"); constructeur("Test",new Class[] {classString,classObject},new Object[] {param1,param2});
Partager