Bonjour à vous
Je souhaite remplir un treeNode en utilisant la réflexivité, je m'explique
J'ai:
- un objet Parc qui contient un ArrayList<Machine>
- un objet Machine qui contient un ArrayList<DisqueDur>
- un objet Machine qui contient un ArrayList<Ecran>
je souhaiterai pouvoir envoyé un objet quelconque (Parc, Machine) pour remplir un treeNode voila le début mais je n'arrive pas à récupérer les objet contenus dans les ArrayList:
Comme vous le voyez j'ai essayé aussi de passer par la class Method mais j'obtiens une exception noSuchMethodException, alors que cette méthode existe!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33
34
35
36
37
38
39
40
41
42 import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import javax.swing.tree.*; public class MethodeGraphique<T> { public static TreeNode remplirTreeNode(Object objet) { DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode(objet .getClass().getName()); Field[] champs = objet.getClass().getDeclaredFields(); for (int i = 0; i < champs.length; i++) { if (champs[i].getType() != ArrayList.class) continue; else try { Method m= objet.getClass().getMethod("get"+champs[i].getName()); //Object o=objet.getClass().getField(champs[i].getName()); Object o=m.invoke(objet); System.out.println(o.toString()); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null;//je ne suis jamais arrivé jusque là }
Si quelqu'un peut m'aider par cette voie là ou part une autre, juste pour récupérer les objets de mes ArrayLists, afin de faire juste après
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for (Bidoule bidoule:ListBidoule){ ....
Partager