Java内部类:为多个扩展关键字



我有多个级别的内部类。extend关键字适用于第一个子级别,但不适用于第二个子级别。含义:

public class A{
       .........
    public class B extends A{
           ..........
        public class C extends B{
             ........
        }
    }
}

这给了我一个public class C extends B{的错误。上面写着:

No enclosing instance of type A is available due to some intermediate constructor invocation.

为什么我会出现此错误,如何修复?我以为默认构造函数会处理这个问题。

您的代码是合法的,应该可以工作。事实上,你有错误的意思之一:

  1. 您尚未发布所有代码
  2. 您使用损坏/修改的jre

我看了你的错误,指出

由于某些中间原因,类型A的封闭实例不可用构造函数调用

所以我想在您的代码中声明了一些构造函数。失败的可能原因是您为类A声明了带参数的构造函数,但尚未为BC声明。规格说明:

如果默认构造函数是隐式的,则是编译时错误声明,但超类没有可访问的构造函数它不带参数,也没有throws子句。


另一种可能性是您的包中已经有AB类,或者您有来自另一个包的import ed AB类。若编译器不知道您扩展了什么类,那个么这个错误可能会产生误导。

您使用的是非静态子类,它需要引用外部实例。如果您不需要它们的非静态性,只需将static关键字添加到内部类的定义中即可。我不知道为什么给定的例子对你不起作用。

最新更新