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 是 class
、abstract class
还是 interface
,这都一样。
该用例用于递归数据结构 -- 符号命名空间。基本上,我想要Namespace extends Namespace.Member
、MyDataChunk extends Namespace.Member
的命名结构;每个 Namespace
就像一个从 String
到 Namespace.Member
的映射,因此允许向下递归 Namespace
的多个级别,以 MyDataChunk
.
终止
I don't see any cycles involved
我愿意:Outer
如果 Outer.Inner
不存在则无法扩展。要使 Outer.Inner
存在,就必须存在 Outer
。这是一个 Catch-22,一个循环依赖。
这是允许的:
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
.
I don't see any cycles involved
我愿意:Outer
如果 Outer.Inner
不存在则无法扩展。要使 Outer.Inner
存在,就必须存在 Outer
。这是一个 Catch-22,一个循环依赖。