problème avec la Reflection
Bonjour,
Dans le code suivant, getMethod balance une exception:
java.lang.NoSuchMethodException: com.toto.beans.MyBean.updateTree(java.util.ArrayList)
Qu'est-ce que je dois mettre en 2ème argument de la méthode getMethod afin qu'il retrouve ma méthode updateTree(List<Data> treeList) ?
Merci pour vote aide.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public class MyBean implements Serializable {
public void updateDB() {
try {
update("Tree");
update("Leaf");
...
}
catch (Exception e) {
log.error("", e);
}
}
private void update(String methodName) throws Exception {
Method method = null;
method = this.getClass().getMethod("update" + methodName, ArrayList.class); //Je ne sais pas quoi mettre comme 2nd argument (ArrayList.class, List.class et List<Data>.class ne fonctionnent pas)
/*Sinon, le code ci-dessous fonctionne mais c'est plus long et moins "safe" puisqu'on ne vérifie pas les arguments
Method[] methods = this.getClass().getDeclaredMethods();
for (Method m : methods) {
if (m.getName().equals("update" + methodName)) {
method = m;
break;
}
}*/
...
method.invoke(this, reqStatus.getResults().getRequestedData()); //reqStatus.getResults().getRequestedData() est de type List<Data>
}
private void updateTree(List<Data> treeList) throws Exception {
...
}
private void updateLeaf(List<Data> leafList) throws Exception {
...
}
} |