我可以发现一个Java类声明的内部类使用reflection吗?

在Java中,有没有办法使用JDK库来发现在另一个类中实现的私有类? 还是我需要这样使用像ASM的东西?

3 Solutions collect form web for “我可以发现一个Java类声明的内部类使用reflection吗?”

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 AB 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); } } 

我想这是你以后的事情:上课。 getClasses() 。

  • 如何在Java中创build一个通用数组?
  • 自定义属性对抽象属性的inheritance
  • 使用Case / Switch和GetType来确定对象
  • 如何dynamic获取函数参数名称/值?
  • 如何find所有实现给定接口的类?
  • 在unit testing中使用reflection是不好的做法?
  • 如何使用给定的Type对象调用generics方法?
  • 如何使用Javareflection调用超类方法
  • 使用reflection在内部类中使用参数实例化构造函数
  • Java 8 Lambdas上的reflectiontypes推断
  • 获取一个类的所有(派生)接口