【发布时间】:2017-09-15 08:19:02
【问题描述】:
class C extends B 时发生错误。但是,当我写new A().super(); 时,问题就解决了。请考虑以下代码:
public class A {
public class B extends A {
public class C extends B {
public C() {
// No enclosing instance of type A is available due to some intermediate constructor error
// new A().super();
}
}
}
}
我的问题是为什么class C cannot extend Class B?为什么调用new A().super(); 可以解决问题?这是什么意思?有没有更好的方法来解决(不使用静态嵌套类)?
【问题讨论】:
-
两个版本(有和没有
new A().super();编译对我来说都很好。我正在运行 java 1.8.0_144。 -
您能否更具体地了解“错误发生”和“问题”?
-
关于“更好的解决方法”,我会考虑将嵌套的类层次结构重构为单独的类,但这当然取决于实际代码建模的内容。
-
@Henry 错误 -> 由于一些中间构造函数,没有可用的 A 类型封闭实例
-
'非静态内部'是一个重言式。
标签: java inheritance constructor inner-classes super