Bonjour,
Je cherche à faire de la réflection de méthode avec des arguments de type dérivé.
J'utilise la méthode getMethod(...) de la classe Class.
Je veux retrouver le type de retour de la méthode println() de la classe java.io.PrintStream dont l'argument est de type java.util.Comparator.
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Class type = java.io.PrintStream.class; String nom = "println"; Class[] args = new Class[1]; args[0] = java.util.Comparator.class; try { Method methode = type.getMethod(nom, args); type = methode.getReturnType(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); }
Il devrait me retrouver la méthode PrintStream.println(Object) mais il n'en est rien, j'ai plutôt une exception... :
Comment remédier à ce problème sans avoir à tester toutes les méthodes héritées et implémentées ? (Surtout que ça peut devenir compliqué à partir de deux arguments)java.lang.NoSuchMethodException: java.io.PrintStream.println(java.util.Comparator)
at java.lang.Class.getMethod(Unknown Source)
at fr.societe.projet.MaClasse.maMethode(MaClasse.java:XXX)
at [...]
[EDIT]
J'ai également lu ce sujet : http://www.developpez.net/forums/d77...introspection/
... qui correspond à mon problème. Cependant, j'ai une remarque sur le post #5 : A priori, un appel ambigu ne peut pas être fait en Java, une erreur de compilation est censée être retournée (à moins que ce ne soit qu'un simple avertissement ).
Bref, la question est du coup restée en suspens.
[/EDIT]
Partager