【发布时间】:2013-06-13 14:11:15
【问题描述】:
以下代码按预期编译:
class A {
class B {}
class C extends B {}
}
但是,如果我们有类B 扩展类A,我们会收到一个编译错误:
class A {
class B extends A {}
class C extends B {} // <-- Error here
}
由于一些中间体,没有可用的类型 A 的封闭实例
构造函数调用。
这里发生了什么?为什么扩展 A 会改变什么?
编辑: 显然,这在 Java 7 中编译得很好。我希望能解释一下为什么它不能在旧 Java 版本中编译,以及 Java 7 中发生了什么变化以允许它。
另请参阅:
【问题讨论】:
-
请忘记整段废话——这是一个错误。 Javac 在这种情况下可以正常工作。我已经编辑了我的答案。 bugs.eclipse.org/bugs/show_bug.cgi?id=373371
-
@ZiyaoWei 这在 IntelliJ 中也不起作用
-
Javac 7 应该可以工作,如果不行,添加构造函数会有所帮助。
-
发现骗局 - stackoverflow.com/questions/3383460/…,但此后情况发生了变化,因此我没有将其标记为骗局。仍在努力寻找相关信息。
-
从 JLS 7 中找到参考,请参阅我编辑的答案。
标签: java compiler-errors inner-classes