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



  • 相关阅读:
    vim替换
    vim 常用快捷键 二
    vim撤销
    让你提升命令行效率的 Bash 快捷键
    快速正确的安装 Ruby, Rails 运行环境
    STL的常用算法
    Ubuntu下Postfix邮件服务器安装及基本的设置
    vim 参考手册
    指针 多维数组 数组指针 指针数组
    数学小抄
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/9667426.html
Copyright © 2011-2022 走看看