001一个内部类的实例拿到所在外部类的实例(反射)

时间:2021-08-12
本文章向大家介绍001一个内部类的实例拿到所在外部类的实例(反射),主要包括001一个内部类的实例拿到所在外部类的实例(反射)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

 

代码实现:给一个内部类对象,如何通过反射,去获取所依靠的外部类对象的某个成员变量并打印出来。

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
            {

            }
        }
    }
}

原文地址:https://www.cnblogs.com/LLL0617/p/15134989.html