zoukankan      html  css  js  c++  java
  • java中this$0 this$1 this$2

    import java.lang.reflect.Field;

    public class Outer {//this$0

    public class FirstInner {//this$1

    public class SecondInner {//this$2

    public class ThirdInner {
    }
    }
    }

    public static void main(String[] args) throws Exception {

    //初始化各内外实例
    Outer test = new Outer();
    FirstInner first = test.new FirstInner();
    FirstInner.SecondInner second = first.new SecondInner();
    FirstInner.SecondInner.ThirdInner third = second.new ThirdInner();

    System.out.println(test.hashCode());
    System.out.println(first.hashCode());
    System.out.println(second.hashCode());

    //Outer,this$0
    Field outerfield = first.getClass().getDeclaredField("this$0");
    outerfield.setAccessible(true);
    Object object = outerfield.get(first);
    System.out.println(object.getClass()+","+object.hashCode());

    //FirstInner,this$1
    Field firstInnerfied = second.getClass().getDeclaredField("this$1");
    firstInnerfied.setAccessible(true);
    object = firstInnerfied.get(second);
    System.out.println(object.getClass()+","+object.hashCode());

    //SecondInner,this$2
    Field secondInnerfield = third.getClass().getDeclaredField("this$2");
    secondInnerfield.setAccessible(true);
    object = secondInnerfield.get(third);
    System.out.println(object.getClass()+","+object.hashCode());

    }
    }

    运行结果:

    1163157884
    1956725890
    356573597
    class my.test.Outer,1163157884
    class my.test.Outer$FirstInner,1956725890
    class my.test.Outer$FirstInner$SecondInner,356573597



  • 相关阅读:
    DDL-表的管理
    DDL-库的管理
    Linux虚拟机--进入MySQL报错的解决办法
    前端底层-原型
    前端底层-对象与构造函数
    前端底层-this
    前端底层-DOM
    前端底层-数据类型与数据的三大存储格式
    前端底层-函数
    前端底层-数据类型与全局属性
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/9667426.html
Copyright © 2011-2022 走看看