这是允许的:
public class Outer {
public static class Inner extends Outer { }
}
但这不是:
public class Outer extends Inner {
public static class Inner { }
}
在第二种情况下,编译器抱怨Cyclic inheritance involving package.Outer
。我没有看到任何涉及的周期;为什么第二种情况无效?
无论Inner是class
,abstract class
还是interface
,行为都相同。
用例用于递归数据结构 - 符号命名空间。基本上,我想要Namespace extends Namespace.Member
,MyDataChunk extends Namespace.Member
的命名结构;每个Namespace
都会像String
到Namespace.Member
的地图一样,从而允许以Namespace
结尾的多个MyDataChunk
级别进行递归。
答案 0 :(得分:4)
我没有看到任何涉及的周期
我这样做:如果Outer
不存在,则Outer.Inner
无法展开Outer.Inner
。要使Outer
存在,forfiles
必须存在。它是一个Catch-22,一个循环依赖。