繁体   English   中英

顶级类扩展内部类

[英]Top level class extending an inner class

我理解扩展内部类的顶级类的概念:

package pkg1;
public class A {
    public class B {
    }
}

package pkg2;
import pk1.A;
public class C extends A.B {
    public C() {
        new A().super();
    }
}

但我无法弄清楚任何说明这一点的真实例子。 也就是说,我们为什么要使用这样的实现呢?

也就是说,我们为什么要使用这样的实现呢?

你不应该。 如果C必须创建自己的封闭实例,那么它在语义上不再是“内部”。

当您传入封闭实例时,此功能更有用,其行为与内部类相同:

class C extends A.B {
    C(A enclosing) {
        enclosing.super(); // note: invokes a constructor
    }                      //       of the B superclass
}

(除非我们不能像someA.new C()一样使用类实例创建表达式。我们必须使用new C(someA) 。)

但如果你发现自己不得不使用它,这可能意味着你已经将自己编程到一个角落。 B应该是顶级类或static ,并且显式传入“封闭实例”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM