Matrix 在每个方法的开始和结束的时候,添加了 埋点,那么这是怎么实现的呢?字节码插桩技术,是在编译的时候将代码放进去的。
内部类访问外部类的私有属性的原理:
1 | public class OutClass { |
为什么内部类 InnerClass 能直接使用 OutClass 中的 i 和 j ,尤其 j 还是 private 的。这是因为编译后,外部类会生成有一个静态方法:
1 | static int access$000(com.demo.OutClass clazz) { |
所以,最后内部类是通过静态方法获取到 j 的值。传入了 OutClass 的对象。而 i 是怎么拿到的呢?其实是通过 getfield 指令。