美文网首页
非静态内部类为什么持有外部类的this引用

非静态内部类为什么持有外部类的this引用

作者: 肚皮怪_Sun | 来源:发表于2018-03-23 00:22 被阅读0次

内部类虽然和外部类写在同一个文件中, 但是编译完成后, 还是生成各自的class文件,内部类通过this访问外部类的成员。
1 编译器自动为内部类添加一个成员变量, 这个成员变量的类型和外部类的类型相同, 这个成员变量就是指向外部类对象(this)的引用;
2 编译器自动为内部类的构造方法添加一个参数, 参数的类型是外部类的类型, 在构造方法内部使用这个参数为内部类中添加的成员变量赋值;
3在调用内部类的构造函数初始化内部类对象时,会默认传入外部类的引用。

相关文章

  • 内存泄漏解析

    常识 非静态内部类(包括匿名内部类:)默认会持有外部类的引用 静态内部类不会持有外部类的引用 静态存储区(存储静态...

  • Java 内存泄漏场景整理(2)

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

  • 内部类应用

    一、静态内部类和非静态内部类(1)内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用。(2)...

  • Java内部类

    Java内部类 大纲: java内部类有什么特点?为什么需要内部类? 非静态内部类持有外部类的引用 内部类的分类。...

  • 关于静态内部类

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

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

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

  • Java基础(1 - 15)

    目录 1,equals与==的区别;2,静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用...

  • (Android)最新2017安卓面试题级答案(精选版)

    JAVA 相关 1.静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它...

  • Java基础

    Java相关 1.静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它?...

  • 面试题2

    JAVA 相关 1.静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它...

网友评论

      本文标题:非静态内部类为什么持有外部类的this引用

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