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 保持嵌套可读性