今天调试程序的时候看到调用栈中有一行“奇怪”的调用,之前遇到从没有了解过,这次特意查了一下这种情况。

直接说明情况吧,在一个内部类要调用外部类的私有方法时候,就会有类似的显示。我自己写了一个类来模拟这种情况,这样会比较清晰一些:
package innerclass;
public class Outer {
class InnerImp {
public void innerDo() {
outerDo();
}
}
private void outerDo(){
System.out.println("ss");
}
public void doSomething(){
InnerImp inner = new InnerImp();
inner.innerDo();
}
}
当debug的时候:

其实这个
access$000
,是在编译阶段自动生成的Outer类的一个静态方法,用于内部类来调用外部类的私有函数,所以这只是一个编译细节。当遇到这个情况的时候我们只需要了解这个情况就可以了。
网友评论