Bonjour à tous,

je me tourne vers vous car je bloque sur un TP d'introspection et je n'arrive pas à comprendre pourquoi mon programme ne marche pas.

TP : Soit à développer un petit outil ( de génie) logiciel qui, pour une classe donnée, retourne la liste des méthodes héritées non redéfinies localement.

Si quelqu'un à une idée, j'aimerai beaucoup qu'il m'en fasse par (le formatage de la méthode est imposé).

Merci.

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
 
public static Set<Method> getHeritees(String nomDeLaClasse) throws ClassNotFoundException{
        Class<?> classe = Class.forName(nomDeLaClasse);
        Class<?> superClasse = classe.getSuperclass();
 
        Set<Method> set = new HashSet<Method>();
 
        while(superClasse != null){
            for(Method m : superClasse.getDeclaredMethods()){
                if(Modifier.isPublic(m.getModifiers()) || Modifier.isProtected(m.getModifiers()) && !(Modifier.isAbstract(m.getModifiers()))){
                    set.add(m);
                }    
            }  
            superClasse = superClasse.getSuperclass();
        }    
 
        Iterator<Method> it = set.iterator();
 
        while(it.hasNext()){
            Method m = it.next();
            for(Method method : classe.getDeclaredMethods()){
                if(m.getName().equals(method.getName()) && m.getReturnType().equals(method.getReturnType())){
                    try{
                        classe.getDeclaredMethod(m.getName(), m.getParameterTypes());
                        it.remove();
                    } catch(Exception e){
                    }    
                }    
            } 
        }    
 
        return set;
    }