计算机
类型
可以朗读
语音朗读
357千字
字数
2021-09-01
发行日期
展开全部
主编推荐语
本书几乎涵盖了Kotlin所有的特性,包括函数特性、面向对象特性、元编程、DSL、跨平台开发、协程、Flow、RxJava、Jetpack等,还介绍了使用Kotlin开发的多个实例,内容非常丰富。
内容简介
本书详细介绍了Kotlin语言方方面面的特性,包括各种类型的函数,贯彻本书始终的Lambda表达式,有别于Java的委托、泛型,灵活、简洁的DSL,常用的语法糖,相比线程更加轻量级的协程,参考RxJava实现的Flow,等等。
本书还提供了大量涉及移动端、服务端甚至桌面端的案例,这些案例都是编者使用Kotlin之后的实践和心得,同时包含很多编者封装的library,供读者参考、借鉴和使用。
本书适合有一定Kotlin语法基础的读者使用,尤其适合移动端和服务端的开发人员使用,也可以用作大专院校和培训机构的教学参考
目录
- 版权信息
- 作者简介
- 内容简介
- 前言
- 第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、Obschmerver的同流合污
- 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 总结
展开全部
出版方
清华大学出版社
清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。