封面
版权信息
作者简介
内容简介
前言
第1章 认识Kotlin
1.1 Kotlin简介
1.1.1 Kotlin的历史
1.1.2 Kotlin的特性
1.2 Kotlin的发展
1.2.1 实用主义
1.2.2 生态圈
1.2.3 逐渐Kotlin化的Java
1.3 总结
第2章 Kotlin的函数与类
2.1 函数的基本概念
2.1.1 函数的参数
2.1.2 函数
2.2 Kotlin的类(一)
2.2.1 构造函数和初始化块
2.2.2 属性
2.2.3 抽象类
2.2.4 嵌套类和内部类
2.2.5 枚举类
2.3 Kotlin的类(二)
2.3.1 对象声明和对象表达式
2.3.2 伴生对象
2.3.3 数据类
2.3.4 密封类
2.4 总结
第3章 Kotlin的函数式编程
3.1 函数式编程与高阶函数
3.1.1 函数式编程
3.1.2 高阶函数
3.2 Lambda表达式
3.2.1 Java 8的Lambda
3.2.2 Kotlin的Lambda语法
3.2.3 简化Kotlin的Lambda表达式
3.2.4 方法引用
3.2.5 Kotlin支持SAM转换
3.2.6 使用高阶函数的例子
3.2.7 换个角度看Lambda表达式
3.3 集合、序列和Java中的流
3.3.1 集合中的函数式API
3.3.2 序列和流
3.4 总结
第4章 内联函数与扩展函数
4.1 内联函数
4.1.1 inline的使用
4.1.2 禁用内联——noinline
4.1.3 非局部返回以及crossinline的使用
4.2 内联属性
4.2.1 内联属性
4.2.2 内联类
4.3 扩展函数
4.3.1 扩展函数的特性
4.3.2 常用标准库的扩展函数
4.4 扩展属性
4.5 总结
第5章 委托
5.1 委托介绍
5.1.1 静态代理
5.1.2 动态代理
5.2 Kotlin的委托模式和委托属性
5.2.1 委托模式
5.2.2 委托属性
5.3 lateinit和by lazy
5.4 总结
第6章 泛型
6.1 类型擦除
6.1.1 Java泛型的优点
6.1.2 Kotlin的泛型
6.1.3 Java通过类型擦除支持泛型
6.1.4 Kotlin如何获得声明的泛型类型
6.2 型变
6.2.1 类和类型
6.2.2 型变
6.3 泛型约束、类型投影与星号投影
6.3.1 泛型约束
6.3.2 类型投影
6.3.3 星号投影
6.3.4 泛型的应用
6.4 总结
第7章 元编程
7.1 元编程
7.1.1 元编程介绍
7.1.2 元编程的分类
7.1.3 根本没有什么元编程,从来只有编程而已
7.2 Kotlin反射概述
7.2.1 概述
7.2.2 Kotlin反射API
7.3 Java反射和Kotlin反射(上)
7.3.1 类引用,获取Class对象
7.3.2 构造函数引用,获取类的构造函数
7.3.3 函数引用,获取类的成员函数
7.3.4 属性引用,获取类的成员变量
7.4 Java反射和Kotlin反射(下)
7.4.1 获取类的其他信息
7.4.2 Java反射与Kotlin反射的互操作性
7.5 总结
第8章 DSL的构建
8.1 DSL介绍
8.2 构建一个DSL的多种方式
8.2.1 带接收者的函数类型
8.2.2 带接收者的Lambda
8.2.3 创建一个自己的DSL
8.2.4 将扩展函数改成DSL的方式
8.2.5 使用运算符重载实现DSL
8.2.6 使用中缀表达式实现DSL
8.2.7 Kotlin DSL的实际使用——封装路由框架的使用
8.3 总结
第9章 常用语法糖与设计模式
9.1 运算符重载
9.2 中缀表达式
9.2.1 在扩展函数中使用中缀表达式
9.2.2 在成员函数中使用中缀表达式
9.3 作用域函数
9.3.1 作用域函数的概念
9.3.2 如何优雅地使用作用域函数
9.4 Contract契约
9.4.1 Contract的概念
9.4.2 Contract的特性
9.4.3 Contract源码解析
9.4.4 小结
9.5 在data class中使用MapStruct
9.5.1 data class的copy()为浅拷贝
9.5.2 MapStruct简介
9.5.3 在Kotlin中使用MapStruct
9.6 更好地使用设计模式
9.6.1 单例模式
9.6.2 builder模式
9.6.3 观察者模式
9.6.4 状态模式
9.7 总结
第10章 跨平台开发
10.1 跨平台的简单介绍
10.1.1 跨平台开发的愿景
10.1.2 跨平台开发当前的主流技术
10.1.3 Kotlin与Flutter的对比
10.2 利用Ktor-Client实现跨平台网络请求
10.2.1 什么是Ktor
10.2.2 Ktor-Client的使用
10.3 总结
第11章 协程及其应用
11.1 协程的基本概念
11.1.1 协程的定义
11.1.2 为何要使用协程
11.1.3 Kotlin协程的基本概念
11.2 Coroutine builders
11.2.1 launch和async
11.2.2 runBlocking
11.3 挂起函数
11.3.1 delay
11.3.2 yield
11.3.3 withContext
11.3.4 coroutineScope
11.4 协程的上下文和调度
11.4.1 协程的调度
11.4.2 父子协程
11.4.3 多个CoroutineContext进行“+”操作
11.4.4 CoroutineContext+Job
11.5 协程的作用域CoroutineScope
11.5.1 尽量少用GlobalScope
11.5.2 安全地使用CoroutineScope
11.5.3 在Android中更好地使用Coroutines
11.6 Channel机制
11.6.1 生产者和消费者
11.6.2 管道
11.6.3 channel缓冲
11.6.4 actor
11.6.5 Select表达式
11.7 总结
第12章 Flow的基本使用
12.1 Flow的使用
12.1.1 Kotlin Flow介绍
12.1.2 Flow的基本使用方式
12.1.3 Flow的生命周期
12.2 Flow和RxJava
12.2.1 Flow和Sequences
12.2.2 Flow和RxJava
12.3 Flow的异常处理
12.3.1 catch操作符
12.3.2 retry、retryWhen操作符
12.4 Flow的线程操作
12.4.1 更为简化的线程切换
12.4.2 flowOn和RxJava的observeOn
12.4.3 buffer实现并发操作
12.4.4 并行操作
12.5 Flow其他的操作符
12.5.1 转换操作符
12.5.2 限制大小的操作符
12.5.3 终端操作符
12.5.4 合并操作符
12.5.5 扁平化操作符
12.6 总结
第13章 RxJava的新特性及常用操作符
13.1 RxJava入门
13.1.1 RxJava入门理念
13.1.2 RxJava的基础知识
13.1.3 RxJava的生命周期
13.2 RxJava 3新特性描述
13.2.1 主要特性讲解
13.2.2 与RxJava 2.x的区别
13.2.3 RxJava 3新特性部分详述
13.3 常用操作符讲解
13.3.1 创建操作符
13.3.2 转换操作符
13.3.3 过滤操作符
13.4 总结
第14章 RxJava的核心机制
14.1 ObservableSource、Observable、Observer的同流合污
14.2 恐怖的Function机制
14.3 线程的决策者Scheduler
14.3.1 Scheduler工作核心Worker
14.3.2 Scheduler线程池核心RxThreadFactory
14.3.3 异步实践例子
14.3.4 并行的操作
14.4 Observeable五兄弟的差异性
14.4.1 Observable
14.4.2 Flowable
14.4.3 Single
14.4.4 Completable
14.4.5 Maybe
14.5 背压策略
14.5.1 MISSING
14.5.2 ERROR
14.5.3 BUFFER
14.5.4 DROP
14.5.5 LATEST
14.6 总结
第15章 Jetpack
15.1 Jetpack介绍
15.1.1 客户端的架构迭代
15.1.2 AAC的功能
15.1.3 Android Jetpack
15.2 Lifecycle
15.2.1 Lifecycle介绍
15.2.2 Lifecycle的使用
15.2.3 Retrofit结合Lifecycle
15.3 ViewModel
15.3.1 ViewModel介绍
15.3.2 ViewModel的使用
15.3.3 使用Kotlin委托属性创建ViewModel
15.3.4 AndroidViewModel
15.3.5 ViewModel源码简单分析
15.4 LiveData
15.4.1 LiveData介绍
15.4.2 LiveData的使用
15.4.3 在ViewModel中使用LiveData
15.4.4 LiveData实现Fragment之间的通信
15.4.5 LiveData源码简单分析
15.5 Room的用法
15.5.1 Room的基本了解
15.5.2 Room的配置与使用
15.5.3 常用的SQL操作
15.5.4 Room的兼容与升级
15.5.5 小结
15.6 Navigation用法详解
15.6.1 Navigation的配置
15.6.2 Navigation的基本使用
15.6.3 Navigation原理解析
15.6.4 小结
15.7 总结
第16章 Android实战
16.1 构建一个日志框架
16.1.1 Android日志框架L
16.1.2 如何开发一款类似L的日志框架
16.1.3 记录Android日志更好的方式
16.2 网络诊断工具
16.3 使用Netty构建一个在Android上运行的Web服务器
16.3.1 开发背景
16.3.2 AndroidServer的特性
16.3.3 AndroidServer的设计原理
16.3.4 AndroidServer的使用
16.4 实现协程版本的EventBus
16.4.1 RxJava版本的EventBus
16.4.2 Kotlin Coroutine版本的EventBus
16.4.3 小结
16.5 总结
第17章 响应式开发实战
17.1 封装一个基于RxJava的任务框架RxTask
17.1.1 RxTask奠基石的实现
17.1.2 利用奠基石实现多种Task
17.1.3 RxTask的改进,针对Java、Android平台进行适应
17.2 基于Kotlin、RxJava实现的有限状态机
17.2.1 状态机
17.2.2 常用的状态机分类
17.2.3 Kotlin开发的FSM
17.2.4 应用
17.3 Kotlin、RxJava以及传统的机器学习在手机质检上的应用
17.3.1 业务背景
17.3.2 设计思路
17.3.3 代码实现以及踩过的坑
17.3.4 后续的规划
17.4 总结
第18章 服务端实战
18.1 使用Ktor快速开发Web项目
18.1.1 Ktor介绍
18.1.2 Ktor服务端的使用
18.1.3 例子
18.2 使用WebFlux + R2DBC开发Web项目
18.2.1 R2DBC介绍
18.2.2 R2DBC的使用
18.2.3 小结
18.3 使用NetDiscovery开发网络爬虫
18.3.1 NetDiscovery介绍
18.3.2 DSL在爬虫框架中的使用
18.3.3 Kotlin Coroutines在爬虫框架中的使用
18.4 实现智能硬件的远程控制系统(上)
18.4.1 业务背景及远程控制系统的功能
18.4.2 远程控制系统服务端的设计
18.4.3 远程控制系统的数据流向
18.4.4 远程控制系统服务端的相关代码
18.4.5 远程控制系统后续的规划
18.5 实现智能硬件的远程控制系统(下)
18.5.1 远程控制的客户端介绍
18.5.2 Watcher的设计
18.5.3 Watcher的核心代码
18.5.4 小结
18.6 总结
更新时间:2022-07-27 18:29:44