泛型 & 高阶函数
⚡ 实战手册
30章
01
泛型入门
为什么需要泛型?基本概念与Hello World
02
泛型函数
定义泛型函数、类型参数推断、多个类型参数
03
泛型类与接口
声明泛型类、泛型接口、泛型约束
04
类型变异(上)
协变(out)、逆变(in)概念与使用场景
05
类型变异(下)
声明处变异与使用处变异(类型投影)
06
泛型约束
上界约束(:)、多约束(where)实战
07
类型擦除与实化
JVM类型擦除原理、reified与内联函数
08
星投影
* 投影的含义、适用场景与注意事项
09
泛型实战:Builder模式
构建类型安全的Builder模式
10
泛型实战:依赖注入容器
实现一个简单的依赖注入容器
11
高阶函数入门
函数类型、Lambda表达式基础
12
高阶函数定义
参数为函数、返回值为函数的高阶函数
13
常用高阶函数(上)
let, apply, run, also, with 详解
14
常用高阶函数(下)
takeIf, takeUnless, repeat 实战
15
集合函数式API(上)
filter, map, flatMap, flatten
16
集合函数式API(下)
fold, reduce, groupBy, partition
17
序列(Sequence)
惰性求值、与集合的性能对比
18
内联函数
inline, noinline, crossinline 作用与选择
19
闭包与捕获
Lambda捕获变量、闭包的内存影响
20
带接收者的Lambda
构建DSL的基础
21
实战:简易HTML DSL
用高阶函数实现简易的HTML DSL
22
实战:安全资源管理
用高阶函数实现安全的资源管理(use)
23
泛型+高阶:函数组合
类型安全的函数组合
24
泛型+高阶:缓存装饰器
实现一个通用的缓存装饰器
25
协程中的泛型与高阶
suspend函数类型、async/await
26
Flow中的泛型
Flow<T>、FlowCollector、操作符泛型设计
27
泛型与反射
获取泛型类型信息、Gson TypeToken
28
设计模式中的泛型
泛型单例、泛型工厂模式
29
性能考量
编译优化、内联带来的代码膨胀
30
综合实战:重构网络层
用泛型与高阶函数重构Android网络请求层