从非静态内部类访问外部类
对外部类的引用使用类名和 this
public class OuterClass {
    public class InnerClass {
        public void method() {
            System.out.println("I can access my enclosing class: " + OuterClass.this);
        }
    }
}
你可以直接访问外部类的字段和方法。
public class OuterClass {
    private int counter;
    public class InnerClass {
        public void method() {
            System.out.println("I can access " + counter);
        }
    }
}
但是在名称冲突的情况下,你可以使用外部类引用。
public class OuterClass {
    private int counter;
    public class InnerClass {
        private int counter;
        
        public void method() {
            System.out.println("My counter: " + counter);
            System.out.println("Outer counter: " + OuterClass.this.counter);
            
            // updating my counter
            counter = OuterClass.this.counter;
        }
    }
}