Java 外部 Class 扩展静态内部 Class

Java Outer Class extends static Inner Class

这是允许的:

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.

终止

I don't see any cycles involved

我愿意:Outer 如果 Outer.Inner 不存在则无法扩展。要使 Outer.Inner 存在,就必须存在 Outer。这是一个 Catch-22,一个循环依赖。