美文网首页
静态内部类的使用场景

静态内部类的使用场景

作者: AndroidTony | 来源:发表于2017-09-20 22:34 被阅读250次

1 使用的实例

首先我们来看一下,android中有哪些地方使用到了静态内部类:

  • 1 Listview的Adapter中的ViewHolder
  • 2 Activity的中的Handler(静态handler,通过弱引用持有外部activity)
  • 3 builder模式中的builder类
  • 4 集合中的Entry类
  • 5 各种View内部的listener

2 主要特点

静态内部类的主要特点:
1 不持有外部类的引用(普通内部类持有)
2 可以直接创建实例,不需要先创建外部类(普通内部类需要)
3 可以有静态成员变量、方法(普通内部类不行)和非静态成员变量、方法
4 只可以直接访问外部类静态成员,不可以直接访问外部类的非静态成员(普通内部类可以),需要通过传入外部类引用的方式才能访问

3 使用场景

外部类与内部类有很强的联系,需要通过内部类的方式维持嵌套的可读性。
内部类可以单独创建。
内部类不依赖于外部类,外部类需要使用内部类,而内部类不需使用外部类(或者不合适持有外部类的强引用)。

4 问题

为什么不直接使用两个类,而要使用内部类?
1 维持两者之间密切的联系
2 保持嵌套可读性

相关文章

  • Java学习——内部类

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

  • 内部类相关知识点

    成员内部类分为两种:静态内部类和非静态内部类,使用static修饰的成员内部类是静态成员内部类,没有使用stati...

  • Android常见内存泄漏

    内存泄漏场景: 静态变量引用非静态内部类/匿名类实例。子线程相关的非静态内部类/匿名内部类引用。Handler导致...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • 静态内部类

    非静态内部类: 非静态内部类中不能有静态方法、静态成员变量、静态初始化块。 静态内部类: 如果使用static...

  • 内存泄露-问题分析

    Handler 匿名内部类、非静态内部类 如何避免 1:使用静态内部类,加上static 修饰 2:使用WeakR...

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

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

  • 类的编译期与运行期

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

  • Android内存分析:profiler + MemoryAna

    一些内存泄漏的场景: 1 非静态内部类的静态实例2 多线程相关的匿名内部类/非静态内部类3 Handle内存泄漏4...

  • 静态内部类的使用场景

    1 使用的实例 首先我们来看一下,android中有哪些地方使用到了静态内部类: 1 Listview的Adapt...

网友评论

      本文标题:静态内部类的使用场景

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