美文网首页Java知识123
怎么继承一个非静态的内部类?

怎么继承一个非静态的内部类?

作者: 奔跑的笨鸟 | 来源:发表于2017-06-19 11:08 被阅读6次

如果某些情况下,如要继承一个内部类,现实中可能不会有这种要求。
一个包含内部类的类

class WithInner {
     class Inner {
    }
}

我们这样直接继承好像会有错误的。

/错误信息:
//Multiple markers at this line
//- No enclosing instance of type WithInner is available due to some intermediate constructor invocation
//- Breakpoint:F
public class F extends WithInner.Inner {
    
}

大概意思需要一个引用外部类WithInner 的构造方法。我们修改如下,就能顺利通过编译。

public class F extends WithInner.Inner {
    public F(WithInner withInner) {
        withInner.super();
    }

}

实际上原理可以简单理解为,一个非静态内部类的实例必须有一个外部类的引用。
如果内部类是静态的,其实就不需要外部类的实例了。

class WithInner {
     static class Inner {
    }
}


public class F extends WithInner.Inner {


}

相关文章

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • 类的编译期与运行期

    非静态内部类 非静态内部类到底可以有静态属性吗? static成员变量,或者static final常量 非静态内...

  • Handler内存泄漏解决及原因分析(源码向)

    1.使用静态内部类和弱引用 自定义静态内部类继承Handler 因为静态内部类不能访问外部类的非静态方法,所以需要...

  • Java基础系列之内部类的多重继承与事件回调

    首先说为什么要使用内部类: 1、实现多重继承 2、实现闭包(隐藏关键环节) 3、回调 常见内部类类型 1、非静态内...

  • Java自学-接口与继承 内部类

    Java 内部类 内部类分为四种: 非静态内部类静态内部类匿名类本地类 步骤 1 : 非静态内部类 非静态内部类 ...

  • Java基础内部类与Static,final

    成员内部类,局部内部类,匿名内部类 非 静态成员内部类 非 静态成员内部类反编译class 静态内部类 静态内部类...

  • 静态内部类与非静态内部类

    静态内部类与非静态内部类的区别 1、非静态内部类不能声明静态成员变量和静态成员方法,而静态内部类可以声明静态和非静...

  • Android线程泄漏场景以及解决办法

    1.非静态内部类的静态实例 非静态内部类会持有外部类的引用,如果非静态内部类的实例是静态的,就会长期的维持着外部类...

  • Java内部类使用

    内部类 在Java中内部类主要分为成员内部类(非静态内部类、静态内部类)、匿名内部类、局部内部类。 非静态态内部类...

  • 关于静态内部类

    静态内部类与非静态内部类的区别 非静态内部类会隐式持有外部类的引用,可能引起内存泄漏。 静态内部类只能调用外部类的...

网友评论

    本文标题:怎么继承一个非静态的内部类?

    本文链接:https://www.haomeiwen.com/subject/ykdgqxtx.html