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

标签 java generics constructor inner-classes

我试图使用父类(super class)型的内部类,它使用了泛型。并在上面得到了那个奇怪的错误。

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

为什么?

最佳答案

呵呵,自己找到了答案:

InnerClass 不是静态的,因此必须为 this$ 引用传递 MySuperClass 的实例 - 但在 super() 调用之前它不可用...只需将 InnerClass 设为静态即可解决我的问题。

关于java - 由于某些中间构造函数,类型 MySuperClass<B> 的封闭实例不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7703812/

相关文章:

c# - 依赖注入(inject)——订阅组合根而不是构造函数中的事件

c++ - 为什么带有 const 关键字的构造函数可以工作,而没有它就不行?

java - 如何限制activemq实例上的重新连接次数

java - 混合两个通用列表java

java - 非常基本的变量超出范围问题 - Java Android

Java 删除 -> 编译时类型对齐 - 或 Java 库/框架代码转换为应用程序逻辑

java - Hibernate java.util.ArrayList 无法转换..类转换异常

java - 在 Java 中创建构造函数的额外好处是什么?

java - 无法在onActivityResult()中提示视频

java - 将组件添加到 jPanel java