1. 程式人生 > 其它 >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 { } } } }