001一個內部類的例項拿到所在外部類的例項(反射)
阿新 • • 發佈:2021-08-12
程式碼實現:給一個內部類物件,如何通過反射,去獲取所依靠的外部類物件的某個成員變數並打印出來。
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就是內部類所自動保留的一個指向所在外部類的引用。
publicclass Outer {//this$0 public class FirstInner {//this$1 public class SecondInner {//this$2 public class ThirdInner { } } } }