目 录
第1章 认识Kotlin 1
1.1 Kotlin简介 1
1.2 Kotlin的发展 2
1.3 总结 3
第2章 Kotlin的函数与类 4
2.1 函数的基本概念 4
2.2 Kotlin的类(一) 11
2.3 Kotlin的类(二) 18
2.4 总结 24
第3章 Kotlin的函数式编程 25
3.1 函数式编程与高阶函数 25
3.2 Lambda表达式 29
3.3 集合、序列和Java中的流 38
3.4 总结 41
第4章 内联函数与扩展函数 42
4.1 内联函数 42
4.2 内联属性 48
4.3 扩展函数 48
4.4 扩展属性 56
4.5 总结 60
第5章 委托 61
5.1 委托介绍 61
5.2 Kotlin的委托模式和委托属性 64
5.3 lateinit和by lazy 69
5.4 总结 73
第6章 泛型 74
6.1 类型擦除 74
6.2 型变 80
6.3 泛型约束、类型投影与星号投影 83
6.4 总结 86
第7章 元编程 87
7.1 元编程 87
7.2 Kotlin反射概述 88
7.3 Java反射和Kotlin反射(上) 90
7.4 Java反射和Kotlin反射(下) 96
7.5 总结 99
第8章 DSL的构建 100
8.1 DSL介绍 100
8.2 构建一个DSL的多种方式 101
8.3 总结 108
第9章 常用语法糖与设计模式 110
9.1 运算符重载 110
9.2 中缀表达式 112
9.3 作用域函数 114
9.4 Contract契约 118
9.5 在data class中使用MapStruct 122
9.6 更好地使用设计模式 126
9.7 总结 130
第10章 跨平台开发 131
10.1 跨平台的简单介绍 131
10.2 利用Ktor-Client实现跨平台网络请求 132
10.3 总结 142
第11章 协程及其应用 143
11.1 协程的基本概念 143
11.2 Coroutine builders 149
11.3 挂起函数 152
11.4 协程的上下文和调度 156
11.5 协程的作用域 CoroutineScope 162
11.6 Channel机制 164
11.7 总结 170
第12章 Flow的基本使用 171
12.1 Flow的使用 171
12.2 Flow和RxJava 177
12.3 Flow的异常处理 182
12.4 Flow的线程操作 185
12.5 Flow其他的操作符 189
12.6 总结 195
第13章 RxJava的新特性及常用操作符 198
13.1 RxJava入门 198
13.2 RxJava 3新特性描述 204
13.3 常用操作符讲解 207
13.4 总结 227
第14章 RxJava的核心机制 229
14.1 ObservableSource、Observable、Observer的同流合污 229
14.2 恐怖的Function机制 230
14.3 线程的决策者Scheduler 231
14.4 Observeable五兄弟的差异性 235
14.5 背压策略 241
14.6 总结 243
第15章 Jetpack 244
15.1 Jetpack介绍 244
15.2 Lifecycle 249
15.3 ViewModel 254
15.4 LiveData 261
15.5 Room的用法 267
15.6 Navigation用法详解 276
15.7 总结 287
第16章 Android实战 288
16.1 构建一个日志框架 288
16.2 网络诊断工具 297
16.3 使用Netty构建一个在Android上运行的Web服务器 304
16.4 实现协程版本的EventBus 313
16.5 总结 322
第17章 响应式开发实战 323
17.1 封装一个基于RxJava的任务框架RxTask 323
17.2 基于Kotlin、RxJava实现的有限状态机 339
17.3 Kotlin、RxJava以及传统的机器学习在手机质检上的应用 353
17.4 总结 361
第18章 服务端实战 362
18.1 使用Ktor快速开发Web项目 362
18.2 使用WebFlux + R2DBC开发Web项目 369
18.3 使用NetDiscovery开发网络爬虫 376
18.4 实现智能硬件的远程控制系统(上) 388
18.5 实现智能硬件的远程控制系统(下) 397
18.6 总结 408