展开全部

主编推荐语

本书几乎涵盖了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月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。