在Java中,有没有办法使用JDK库来发现在另一个类中实现的私有类?或者我需要使用像asm这样的东西吗?
Class.getDeclaredClasses()
是答案.
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); } }