代码实现:给一个内部类对象,如何通过反射,去获取所依靠的外部类对象的某个成员变量并打印出来。
public class A
{
int age=10;
class B
{
}
}
public class Main
{
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException
{
A a=new A();
A.B b=a.new B();
Class bClass=b.getClass();
Field field=bClass.getDeclaredField("this$0");
A outClass=(A)field.get(b);//get(Object obj) 返回指定对象obj上此 Field 表示的字段的值
Field age=outClass.getClass().getDeclaredField("age");
System.out.println(outClass);
}
}
知识点扩展: this$0就是内部类所自动保留的一个指向所在外部类的引用。
public class Outer
{//this$0
public class FirstInner
{//this$1
public class SecondInner
{//this$2
public class ThirdInner
{
}
}
}
}