由于某些中间构造函数,没有 MySuperClass<B> 类型的封闭实例可用

2022-09-04 01:37:43

我试图使用超类型的内部类,它使用泛型。并得到了上面的那个奇怪的错误。

class MySuperClass<B> {
   class InnerClass {
   }

   MySuperClass(InnerClass... c) {
   }
}

在子类中,我试图实例化它:

class MySubClass extends MySuperClass<String> {
   MySubClass() {
      super(new InnerClass(), new InnerClass());
   }
}

编译器让我感到困惑

No enclosing instance of type MySuperClass<B> is available due to some intermediate constructor

为什么?


答案 1

呵呵,自己找到了答案:

InnerClass不是静态的,因此必须为this$引用传递MySuperClass的实例 - 但是在super()调用之前不可用...简单地使InnerClass成为静态解决了我的问题。


答案 2