反编译中内部类调用外部类成员问题
生活随笔
收集整理的這篇文章主要介紹了
反编译中内部类调用外部类成员问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
.access$ 反編譯偶內部類調用外部類成員問題
很簡單的一個測試類源碼:
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文件:
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的話標明是對象成員或者函數。
轉載于:https://blog.51cto.com/sunhongbo/1256123
總結
以上是生活随笔為你收集整理的反编译中内部类调用外部类成员问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习的一些教程
- 下一篇: 求两个字符串的最长公共字串(连续)