В Java есть ли способ использовать библиотеки JDK для обнаружения частных классов, реализованных в другом классе? Или мне нужно использовать что-то вроде asm?
Могу ли я обнаружить объявленные внутренние классы Java, используя отражение?
Ответ 1
Class.getDeclaredClasses() является ответом.
Ответ 2
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);
}
}
Ответ 3
Я думаю, что это то, что вам нужно: Class. getClasses().