zoukankan      html  css  js  c++  java
  • java反编译,内部类调用外部类成员总结 规格严格

    转载:

    java反编译,内部类调用外部类成员总结

    很简单的一个测试类如下:

     源码:                                                                                       编译生成的Class文件:
    public class testOuter {
       private int a;
       private int b;
       
       private void fun() {
           a += 1;
       }

       class testInner {
           int x = 0;
           testInner() {
               b = 1;
               a = 0;
               fun();
           }
       }


    class testOuter$testInner {
        int x = 0;
        testOuter$testInner(testOuter paramtestOuter) {
            testOuter.access$002(paramtestOuter, 1);
            testOuter.access$102(paramtestOuter, 0);
            testOuter.access$200(paramtestOuter);
        }
    }

    可以看出,为了使内部类访问外部类的私有成员,编译器生成了形似 "外部类.access$XYZ"的函数。XYZ为数字。X是按照私有成员在内部类出现的顺序递增的。YZ为02的话,标明是基本变量成员;YZ为00的话标明是对象成员或者函数。

    记录一下,编译反编译看代码时理解代码!

    http://www.retrologic.com/innerclasses.doc7.html

  • 相关阅读:
    Kafka 高级API 实战
    CDH 5.16.1 离线安装 Spark 2.3
    CDH5.16.1 离线安装 Kafka
    CDH5.16.1新增节点
    mysql搭建主从结构
    Kerberos常见错误
    expect实现脚本的 自动交互
    寒假day27
    寒假day26
    寒假day25
  • 原文地址:https://www.cnblogs.com/diyunpeng/p/3065756.html
Copyright © 2011-2022 走看看