由于某些中间构造函数调用,没有可用的PerfHelper类型的封闭实例

use*_*333 22 java abstract inner-classes

考虑以下代码:

class abstract Normal1 extends Something 
{
}

class Outer 
{
  class abstract Inner extends Normal1
  {

  }
}

class General extends Outer.Inner  // Problem occurs at this 
{
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是"由于一些中间构造函数调用,没有可用的PerfHelper类型的封闭实例"

我的问题是我可以像上面那样扩展内部类吗?

Jor*_*dão 27

将内部类声明为static,您应该能够扩展它:

class outer {
  static abstract class inner extends normal1 { }
}
Run Code Online (Sandbox Code Playgroud)

如果inner不是抽象的,那么它与外部相关联,并且只有在外部实例存在时才存在.检查这是否是你真正想要的.


Sum*_*ngh 5

嵌套类就像(在某种意义上)类的属性.

  1. 在实例变量的情况下,它仅在可用时创建其对象与创建inner外部对象时可用的类相同时才可用.

因此,如果你想扩展这个,那么就像上面的jordao建议的那样使你的内部类static inner class