KOTLIN实战PDF电子书下载
- 电子书积分:12 积分如何计算积分?
- 作 者:(俄)DMITRY JEMEROV,SVETLANA ISAKOVA著;覃宇,罗丽,李思阳,蒋扬海译
- 出 版 社:北京市:电子工业出版社
- 出版年份:2017
- ISBN:9787121321580
- 页数:334 页
第1部分 Kotlin简介 1
1 Kotlin:定义和目的 3
1.1 Kotlin初体验 3
1.2 Kotlin的主要特征 4
1.2.1 目标平台:服务器端、Android及任何Java运行的地方 4
1.2.2 静态类型 5
1.2.3 函数式和面向对象 6
1.2.4 免费并开源 7
1.3 Kotlin应用 8
1.3.1 服务器端的Kotlin 8
1.3.2 Android上的Kotlin 9
1.4 Kotlin的设计哲学 10
1.4.1 务实 10
1.4.2 简洁 11
1.4.3 安全 12
1.4.4 互操作性 13
1.5 使用Kotlin工具 14
1.5.1 编译Kotlin代码 14
1.5.2 IntelliJ IDEA和Android Studio插件 15
1.5.3 交互式shell 15
1.5.4 Eclipse插件 15
1.5.5 在线playground 15
1.5.6 Java到Kotlin的转换器 16
1.6 小结 16
2 Kotlin基础 17
2.1 基本要素:函数和变量 17
2.1.1 Hello,world! 18
2.1.2 函数 18
2.1.3 变量 20
2.1.4 更简单的字符串格式化:字符串模板 22
2.2 类和属性 23
2.2.1 属性 24
2.2.2 自定义访问器 25
2.2.3 Kotlin源码布局:目录和包 26
2.3 表示和处理选择:枚举和“when” 28
2.3.1 声明枚举类 28
2.3.2 使用“when”处理枚举类 29
2.3.3 在“when”结构中使用任意对象 30
2.3.4 使用不带参数的“when” 31
2.3.5 智能转换:合并类型检查和转换 32
2.3.6 重构:用“when”代替“if” 34
2.3.7 代码块作为“if”和“when”的分支 35
2.4 迭代事物:“while”循环和“for”循环 36
2.4.1 “while”循环 36
2.4.2 迭代数字:区间和数列 37
2.4.3 迭代map 38
2.4.4 使用“in”检查集合和区间的成员 39
2.5 Kotlin中的异常 41
2.5.1 “try”“catch”和“finally” 41
2.5.2 “try”作为表达式 42
2.6 小结 44
3 函数的定义与调用 45
3.1 在Kotlin中创建集合 45
3.2 让函数更好调用 47
3.2.1 命名参数 48
3.2.2 默认参数值 49
3.2.3 消除静态工具类:顶层函数和属性 50
3.3 给别人的类添加方法:扩展函数和属性 53
3.3.1 导入和扩展函数 54
3.3.2 从Java中调用扩展函数 54
3.3.3 作为扩展函数的工具函数 55
3.3.4 不可重写的扩展函数 56
3.3.5 扩展属性 58
3.4 处理集合:可变参数、中缀调用和库的支持 59
3.4.1 扩展Java集合的API 59
3.4.2 可变参数:让函数支持任意数量的参数 60
3.4.3 键值对的处理:中缀调用和解构声明 60
3.5 字符串和正则表达式的处理 62
3.5.1 分割字符串 62
3.5.2 正则表达式和三重引号的字符串 63
3.5.3 多行三重引号的字符串 64
3.6 让你的代码更整洁:局部函数和扩展 66
3.7 小结 68
4 类、对象和接口 69
4.1 定义类继承结构 70
4.1.1 Kotlin中的接口 70
4.1.2 open、final和abstract修饰符:默认为final 72
4.1.3 可见性修饰符:默认为public 75
4.1.4 内部类和嵌套类:默认是嵌套类 76
4.1.5 密封类:定义受限的类继承结构 79
4.2 声明一个带非默认构造方法或属性的类 80
4.2.1 初始化类:主构造方法和初始化语句块 80
4.2.2 构造方法:用不同的方式来初始化父类 83
4.2.3 实现在接口中声明的属性 85
4.2.4 通过getter或setter访问支持字段 87
4.2.5 修改访问器的可见性 88
4.3 编译器生成的方法:数据类和类委托 89
4.3.1 通用对象方法 89
4.3.2 数据类:自动生成通用方法的实现 92
4.3.3 类委托:使用“by”关键字 93
4.4 “object”关键字:将声明一个类与创建一个实例结合起来 95
4.4.1 对象声明:创建单例易如反掌 95
4.4.2 伴生对象:工厂方法和静态成员的地盘 98
4.4.3 作为普通对象使用的伴生对象 100
4.4.4 对象表达式:改变写法的匿名内部类 102
4.5 小结 104
5 Lambda编程 105
5.1 Lambda表达式和成员引用 105
5.1.1 Lambda简介:作为函数参数的代码块 106
5.1.2 Lambda和集合 107
5.1.3 Lambda表达式的语法 108
5.1.4 在作用域中访问变量 111
5.1.5 成员引用 114
5.2 集合的函数式API 116
5.2.1 基础:filter和map 116
5.2.2 “all”“any”“count”和“find”:对集合应用判断式 118
5.2.3 groupBy:把列表转换成分组的map 119
5.2.4 flatMap和flatten:处理嵌套集合中的元素 120
5.3 惰性集合操作:序列 121
5.3.1 执行序列操作:中间和末端操作 123
5.3.2 创建序列 125
5.4 使用Java函数式接口 126
5.4.1 把lambda当作参数传递给Java方法 127
5.4.2 SAM构造方法:显式地把lambda转换成函数式接口 129
5.5 带接收者的lambda:“with”与“apply” 131
5.5.1 “with”函数 131
5.5.2 “apply”函数 133
5.6 小结 135
6 Kotlin的类型系统 137
6.1 可空性 137
6.1.1 可空类型 138
6.1.2 类型的含义 140
6.1.3 安全调用运算符:“?.” 141
6.1.4 Elvis运算符:“?:” 143
6.1.5 安全转换:“as?” 145
6.1.6 非空断言:“!!” 146
6.1.7 “let”函数 148
6.1.8 延迟初始化的属性 149
6.1.9 可空类性的扩展 151
6.1.10 类型参数的可空性 153
6.1.11 可空性和Java 153
6.2 基本数据类型和其他基本类型 157
6.2.1 基本数据类型:Int、Boolean及其他 158
6.2.2 可空的基本数据类型:Int?、Boolean?及其他 159
6.2.3 数字转换 160
6.2.4 “Any”和“Any?”:根类型 162
6.2.5 Unit类型:Kotlin的“void” 163
6.2.6 Nothing类型:“这个函数永不返回” 164
6.3 集合与数组 164
6.3.1 可空性和集合 165
6.3.2 只读集合与可变集合 167
6.3.3 Kotlin集合和Java 168
6.3.4 作为平台类型的集合 171
6.3.5 对象和基本数据类型的数组 173
6.4 小结 175
第2部分 拥抱Kotlin 177
7 运算符重载及其他约定 179
7.1 重载算术运算符 180
7.1.1 重载二元算术运算 180
7.1.2 重载复合赋值运算符 183
7.1.3 重载一元运算符 184
7.2 重载比较运算符 186
7.2.1 等号运算符:“equals” 186
7.2.2 排序运算符:compareTo 187
7.3 集合与区间的约定 188
7.3.1 通过下标来访问元素:“get”和“set” 188
7.3.2 “in”的约定 190
7.3.3 rangeTo的约定 191
7.3.4 在“for”循环中使用“iterator”的约定 192
7.4 解构声明和组件函数 193
7.4.1 解构声明和循环 194
7.5 重用属性访问的逻辑:委托属性 195
7.5.1 委托属性的基本操作 196
7.5.2 使用委托属性:惰性初始化和“by lazy()” 197
7.5.3 实现委托属性 198
7.5.4 委托属性的变换规则 202
7.5.5 在map中保存属性值 203
7.5.6 框架中的委托属性 204
7.6 小结 205
8 高阶函数:Lambda作为形参和返回值 207
8.1 声明高阶函数 207
8.1.1 函数类型 208
8.1.2 调用作为参数的函数 209
8.1.3 在Java中使用函数类 211
8.1.4 函数类型的参数默认值和null值 212
8.1.5 返回函数的函数 214
8.1.6 通过lambda去除重复代码 216
8.2 内联函数:消除lambda带来的运行时开销 218
8.2.1 内联函数如何运作 219
8.2.2 内联函数的限制 221
8.2.3 内联集合操作 222
8.2.4 决定何时将函数声明成内联 223
8.2.5 使用内联lambda管理资源 223
8.3 高阶函数中的控制流 225
8.3.1 lambda中的返回语句:从一个封闭的函数返回 225
8.3.2 从lambda返回:使用标签返回 226
8.3.3 匿名函数:默认使用局部返回 228
8.4 小结 229
9 泛型 231
9.1 泛型类型参数 232
9.1.1 泛型函数和属性 232
9.1.2 声明泛型类 234
9.1.3 类型参数约束 235
9.1.4 让类型形参非空 237
9.2 运行时的泛型:擦除和实化类型参数 238
9.2.1 运行时的泛型:类型检查和转换 238
9.2.2 声明带实化类型参数的函数 241
9.2.3 使用实化类型参数代替类引用 243
9.2.4 实化类型参数的限制 244
9.3 变型:泛型和子类型化 245
9.3.1 为什么存在变型:给函数传递实参 245
9.3.2 类、类型和子类型 246
9.3.3 协变:保留子类型化关系 248
9.3.4 逆变:反转子类型化关系 252
9.3.5 使用点变型:在类型出现的地方指定变型 254
9.3.6 星号投影:使用*代替类型参数 257
9.4 小结 261
10 注解与反射 263
10.1 声明并应用注解 264
10.1.1 应用注解 264
10.1.2 注解目标 265
10.1.3 使用注解定制JSON序列化 267
10.1.4 声明注解 269
10.1.5 元注解:控制如何处理一个注解 270
10.1.6 使用类做注解参数 271
10.1.7 使用泛型类做注解参数 272
10.2 反射:在运行时对Kotlin对象进行自省 273
10.2.1 Kotlin反射API:KClass、KCallable、KFunction和KProperty 274
10.2.2 用反射实现对象序列化 278
10.2.3 用注解定制序列化 279
10.2.4 JSON解析和对象反序列化 283
10.2.5 反序列化的最后一步:callBy()和使用反射创建对象 287
10.3 小结 291
11 DSL构建 293
11.1 从API到DSL 293
11.1.1 领域特定语言的概念 295
11.1.2 内部DSL 296
11.1.3 DSL的结构 297
11.1.4 使用内部DSL构建HTML 298
11.2 构建结构化的API:DSL中带接收者的lambda 299
11.2.1 带接收者的lambda和扩展函数类型 299
11.2.2 在HTML构建器中使用带接收者的lambda 303
11.2.3 Kotlin构建器:促成抽象和重用 307
11.3 使用“invoke”约定构建更灵活的代码块嵌套 310
11.3.1 “invoke”约定:像函数一样可以调用的对象 310
11.3.2 “invoke”约定和函数式类型 311
11.3.3 DSL中的“invoke”约定:在Gradle中声明依赖 312
11.4 实践中的Kotlin DSL 314
11.4.1 把中缀调用链接起来:测试框架中的“should” 314
11.4.2 在基本数据类型上定义扩展:处理日期 316
11.4.3 成员扩展函数:为SQL设计的内部DSL 317
11.4.4 Anko:动态创建Android UI 320
11.5 小结 322
A 构建Kotlin项目 323
B Kotlin代码的文档化 327
C Kotlin生态系统 331
- 《Maya 2018完全实战技术手册》来阳编著 2019
- 《Python3从入门到实战》董洪伟 2019
- 《大数据Hadoop 3.X分布式处理实战》吴章勇,杨强 2020
- 《星空摄影后期实战》阿五在路上著 2020
- 《半小时漫画股票实战法》财经杂质著 2019
- 《深度学习与飞桨PaddlePaddle Fluid实战》于祥 2019
- 《数字插画实战 人像创作30例》王鲁光著 2019
- 《2017国家执业药师资格考试 全考点实战通关必备 中药学综合知识与技能 第3版》国家执业药师资格考试命题研究专家组 2017
- 《微软Azure实战参考》李竞,陈勇华编著 2019
- 《Cocos Creator微信小游戏开发实战》王绍明编著 2020
- 《少年》谢素台译;(俄)列夫·托尔斯泰 2019
- 《写给孩子的趣味天文学》(俄)雅科夫·伊西达洛维奇·别莱利曼著 2019
- 《写给孩子的趣味物理学》(俄)雅科夫·伊西达洛维奇·别莱利曼著 2019
- 《写给孩子的趣味力学》(俄)雅科夫·伊西达洛维奇·别莱利曼著 2019
- 《我的同时代人的故事 第1卷》(俄)符拉季米尔·加拉克齐昂诺维奇·柯罗连科著;丰子恺,丰一吟译 2020
- 《软物质前沿科学丛书 无处不在的巨分子 原书第2版》钱俊,陈艳峰责编;李安邦译;(美)亚历山大·Y.格罗斯贝格,(俄)阿列克谢·R.霍赫洛夫 2020
- 《生命的善行 托尔斯泰陪你走过春夏秋冬 冬》(俄)列夫·尼古拉耶维奇·托尔斯泰;冯永,李俊杰译 2019
- 《写给孩子的趣味代数学》(俄)雅科夫·伊西达洛维奇·别莱利曼著 2019
- 《村中之月:五幕剧》(俄)屠格涅夫(Ivan Sergieevich Turgenev)撰 1937
- 《战争与和平 上》(俄)列夫·托尔斯泰著;张捷译 2019
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017