内部类的 .this 和 .new 关键字

1.   .this

.this关键字可以在内部创建外部类的引用

public class DotThis {
    void f() {System.out.println("DotThis.f()");}
    public class Inner{
        public DotThis outer() {
            return DotThis.this;
        }
    }
    public Inner inner() {
        return new Inner();
    }
    public static void main(String[] args) {
        DotThis dt = new DotThis();
        DotThis.Inner dti = dt.inner();
        dti.outer().f();
    }
}

在内部类的outer方法中,通过类名DotThis.this可以返回外部类的引用;

常见的就是迭代器模式,Iterator就是一个内部类,通过itertor()方法返回内部类的实例.

2.  .new

.new可以通过类的实例来直接创建内部类,因为内部类不能单独创建,必须依赖一个实例才可以创建.

public class DotThis {
    void f() {System.out.println("DotThis.f()");}
    public class Inner{
        public DotThis outer() {
            return DotThis.this;
        }
    }
    public Inner inner() {
        return new Inner();
    }
    public static void main(String[] args) {
        DotThis dt = new DotThis();
        DotThis.Inner dti = dt.inner();
        dti.outer().f();
    }
}

可以看到,通过dt这个外部类,直接.new就可以创建Inner内部类.

 

posted @ 2023-02-04 18:18  随意的马蒂洛克  阅读(25)  评论(0编辑  收藏  举报