Java Outer Class扩展了静态内部类

时间:2016-09-12 16:11:50

标签: java inheritance inner-classes

这是允许的:

public class Outer {
    public static class Inner extends Outer { }
}

但这不是:

public class Outer extends Inner {
    public static class Inner { }
}

在第二种情况下,编译器抱怨Cyclic inheritance involving package.Outer。我没有看到任何涉及的周期;为什么第二种情况无效?

无论Inner是classabstract class还是interface,行为都相同。

用例用于递归数据结构 - 符号命名空间。基本上,我想要Namespace extends Namespace.MemberMyDataChunk extends Namespace.Member的命名结构;每个Namespace都会像StringNamespace.Member的地图一样,从而允许以Namespace结尾的多个MyDataChunk级别进行递归。

1 个答案:

答案 0 :(得分:4)

  

我没有看到任何涉及的周期

我这样做:如果Outer不存在,则Outer.Inner无法展开Outer.Inner。要使Outer存在,forfiles必须存在。它是一个Catch-22,一个循环依赖。