44 votes

Puis-je découvrir les classes internes déclarées d'une classe Java en utilisant la réflexion ?

En Java, existe-t-il un moyen d'utiliser les bibliothèques du JDK pour découvrir les classes privées implémentées dans une autre classe ? Ou dois-je utiliser quelque chose comme asm ?

67voto

Jen S. Points 1230

2 votes

Malheureusement, cela ne liste pas les classes internes anonymes (javap les signalera).

5voto

Shrirang Points 41
package com.test;

public class A {

    public String str;

    public class B {
        private int i;
    }
}
package com.test;

import junit.framework.TestCase;

public class ReflectAB extends TestCase {
    public void testAccessToOuterClass() throws Exception {
           final A a = new A();
           final A.B b = a.new B();
           final Class[] parent = A.class.getClasses();
           assertEquals("com.test.A$B", parent[0].getName());
           assertEquals("i" , parent[0].getDeclaredFields()[0].getName());
           assertEquals("int",parent[0].getDeclaredFields()[0].getType().getName());
           //assertSame(a, a2);
        }

}

5voto

Cogsy Points 3150

Je pense que c'est ce que vous cherchez : La classe. [getClasses()](http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getClasses()) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X